DUYURU
Sizlere daha iyi ve güvenli hizmet sunabilmek amacıyla, Yazılım ve Sistem Kullanım Koşullarımızı güncelliyoruz. Yapılacak güncelleme ile yazılım, sistem kullanımı, bakım, destek ve hizmet süreçlerimiz daha düzenli ve güvenli şekilde yürütülecektir. Sizlere daha iyi ve güvenli hizmet sunabilmek amacıyla, Yazılım ve Sistem Kullanım Koşullarımızı güncelliyoruz. Yapılacak güncelleme ile yazılım, sistem kullanımı, bakım, destek ve hizmet süreçlerimiz daha düzenli ve güvenli şekilde yürütülecektir. Sizlere daha iyi ve güvenli hizmet sunabilmek amacıyla, Yazılım ve Sistem Kullanım Koşullarımızı güncelliyoruz. Yapılacak güncelleme ile yazılım, sistem kullanımı, bakım, destek ve hizmet süreçlerimiz daha düzenli ve güvenli şekilde yürütülecektir. Sizlere daha iyi ve güvenli hizmet sunabilmek amacıyla, Yazılım ve Sistem Kullanım Koşullarımızı güncelliyoruz. Yapılacak güncelleme ile yazılım, sistem kullanımı, bakım, destek ve hizmet süreçlerimiz daha düzenli ve güvenli şekilde yürütülecektir.
Pzt-Cmt 09:00-18:00
Laravel Mass Assignment Exception Hatası
Laravel Rehber

Laravel Mass Assignment Exception Hatası

Laravel Model Not Found hatası, uygulamanın veritabanında aradığı kaydı bulamadığı durumlarda ortaya çıkar. Özellikle findOrFail(), firstOrFail(), findOrFail() ile kullanılan route model binding ve API işlemlerinde sık karşılaşılır. Bu rehberde Laravel Model Not Found hatasının nedenlerini ve çözüm yöntemlerini adım adım inceleyeceğiz.

9 dk okuma · · Güncellendi: · 7 okundu
İçindekiler

Laravel Model Not Found Hatası Nasıl Çözülür?

Laravel Model Not Found hatası, uygulamanın veritabanında aradığı kaydı bulamadığı durumlarda ortaya çıkar. Özellikle findOrFail(), firstOrFail(), findOrFail() ile kullanılan route model binding ve API işlemlerinde sık karşılaşılır. Bu rehberde Laravel Model Not Found hatasının nedenlerini ve çözüm yöntemlerini adım adım inceleyeceğiz.

1. Laravel Model Not Found Hatası Nedir?

Laravel'de veritabanından kayıt aranırken kayıt bulunamazsa bazı sorgu yöntemleri doğrudan ModelNotFoundException oluşturur.
Örneğin:
Product::findOrFail($id);
Belirtilen ID veritabanında yoksa Laravel kayıt bulunamadığını belirten bir hata oluşturur ve web uygulamasında genellikle 404 yanıtı döndürür.

2. find() ile findOrFail() Arasındaki Fark

find() kayıt bulunamadığında null döndürür.
findOrFail() ise kayıt bulunamadığında exception oluşturur.
Örneğin:
$product = Product::find($id);
Kayıt yoksa:
$product değeri null olabilir.
Diğer kullanım:
$product = Product::findOrFail($id);
Kayıt bulunamazsa Laravel hata oluşturur.

3. firstOrFail() Kullanımını Kontrol Edin

Sorgularda:
Product::where('slug', $slug)->firstOrFail();
kullanıyorsanız belirtilen slug değerine sahip kayıt bulunamadığında Laravel 404 döndürebilir.
Bu nedenle veritabanında aranan değerin gerçekten mevcut olduğunu kontrol edin.

4. Veritabanında Kayıt Var mı?

İlk kontrol edilmesi gereken nokta veritabanıdır.
Örneğin:
Product::find($id);
ile kayıt bulunamıyorsa ilgili ID'nin gerçekten mevcut olup olmadığını kontrol edin.
MySQL üzerinden:
SELECT * FROM products WHERE id = 1;
gibi bir sorguyla kayıt kontrol edilebilir.

5. Yanlış ID Gönderiliyor Olabilir

URL'den gelen ID yanlışsa Model bulunamayabilir.
Örneğin:
/products/125
adresinde 125 ID'li ürün bulunmuyorsa:
Product::findOrFail(125);
hata oluşturabilir.
Form, link, AJAX veya API isteğinde gönderilen ID değerini kontrol edin.

6. Route Model Binding Kontrolü

Laravel otomatik Route Model Binding kullanabilir.
Örneğin:
Route::get('/products/{product}', function (Product $product) {
return $product;
});
Laravel URL'deki değeri Product Model'i üzerinden arar.
Kayıt bulunamazsa 404 yanıtı oluşabilir.

7. Route Model Binding'de Slug Kullanımı

Varsayılan olarak Laravel Route Model Binding genellikle id alanını kullanır.
Slug üzerinden arama yapmak istiyorsanız Model içerisinde:
public function getRouteKeyName()
{
return 'slug';
}
şeklinde tanımlama yapılabilir.
Böylece:
/products/laptop
gibi bir URL üzerinden slug ile kayıt aranabilir.

8. Soft Delete Kayıtlarını Kontrol Edin

Model'de Soft Delete kullanılıyorsa silinmiş kayıtlar normal sorgularda görünmeyebilir.
Örneğin:
Product::find($id);
silinmiş bir kaydı bulamayabilir.
Silinen kayıtları da dahil etmek için:
Product::withTrashed()->find($id);
kullanılabilir.
Yalnızca silinmiş kayıtları almak için:
Product::onlyTrashed()->find($id);
kullanılabilir.

9. Yanlış Model Kullanılıyor Olabilir

Controller içerisinde yanlış Model import edilmişse beklenen kayıt bulunamayabilir.
Örneğin:
use App\Models\Product;
yerine başka bir Model kullanılmış olabilir.
Controller içerisindeki use satırlarını kontrol edin.

10. Model ve Tablo İlişkisini Kontrol Edin

Laravel Model adı ile tablo adı arasında varsayılan bir ilişki vardır.
Örneğin:
Product
Model'i genellikle:
products
tablosunu kullanır.
Farklı bir tablo kullanıyorsanız Model içerisinde:
protected $table = 'urunler';
gibi bir tanım yapılabilir.
Yanlış tablo kullanılıyorsa kayıt bulunamayabilir.

11. Primary Key Değerini Kontrol Edin

Laravel varsayılan olarak Model'in primary key alanını id olarak kabul eder.
Veritabanında farklı bir primary key kullanıyorsanız Model içerisinde belirtilmelidir.
Örneğin:
protected $primaryKey = 'product_id';
Yanlış primary key yapılandırması sorguların beklenmedik sonuç vermesine neden olabilir.

12. API'de Model Not Found Hatası

API endpoint'inde:
Product::findOrFail($id);
kullanıyorsanız kayıt bulunamadığında 404 yanıtı oluşabilir.
API tarafında kullanıcıya daha anlaşılır bir JSON yanıtı vermek istiyorsanız exception veya response yapısını kontrollü şekilde ele alabilirsiniz.

13. Controller İçerisinde Model Kontrolü

Örneğin:
public function show($id)
{
$product = Product::findOrFail($id);
return view('products.show', compact('product'));
}
Burada $id ile eşleşen kayıt bulunamazsa Laravel işlemi durdurur.
Kayıt bulunamadığında özel davranış gerekiyorsa find() kullanıp sonucu ayrıca kontrol edebilirsiniz.

14. null Kontrolü Yapmak

Kayıt bulunamadığında uygulamanın özel bir işlem yapmasını istiyorsanız:
$product = Product::find($id);
Ardından:
if (!$product) {
return redirect()->route('products.index');
}
gibi bir kontrol yapılabilir.
Ancak kullanıcıya 404 göstermek uygulamanın davranışına daha uygunsa findOrFail() kullanılabilir.

15. firstOrFail() ve Slug Kontrolü

Blog gibi yapılarda slug üzerinden kayıt aranabilir.
Örneğin:
$post = Post::where('slug', $slug)->firstOrFail();
URL'deki slug veritabanında bulunmuyorsa Laravel 404 döndürür.
Bu nedenle slug değerinin doğru oluşturulduğundan ve veritabanında mevcut olduğundan emin olun.

16. Model Not Found ve 404 Sayfası

Laravel kayıt bulunamadığında uygulamanın 404 sayfasını gösterebilir.
Özel bir 404 sayfası kullanıyorsanız:
resources/views/errors/404.blade.php
dosyasını düzenleyebilirsiniz.
Böylece Model bulunamadığında kullanıcıya daha anlaşılır bir sayfa gösterilebilir.

17. Database Migration Kontrolü

Model'in bağlı olduğu tablo veya kolonlar doğru oluşturulmamışsa kayıt sorguları beklenen sonucu vermeyebilir.
Migration durumunu kontrol etmek için:
php artisan migrate:status
kullanabilirsiniz.
Gerekirse veritabanındaki tablo ve kolonları kontrol edin.

18. Production Ortamında Model Not Found

Local ortamda çalışan bir kayıt production sunucusunda bulunmayabilir.
Bunun nedenleri:

  • Production veritabanında kayıt olmaması
  • Farklı veritabanı kullanılması
  • Yanlış .env database ayarları
  • Migration eksikliği
  • Veri aktarımının yapılmaması
    olabilir.
    Production .env içerisindeki database bağlantısını da kontrol edin.

19. Model Not Found Hızlı Kontrol

Sorunu hızlı şekilde bulmak için:
php artisan migrate:status
Ardından veritabanındaki ilgili kaydı kontrol edin.
Sonra Controller'daki:
findOrFail()
firstOrFail()
ve Route Model Binding kullanımlarını inceleyin.
URL'deki ID veya slug değerinin doğru olduğundan emin olun.

20. Laravel Model Not Found Hatasını Önleme

Kayıtların kullanıcı tarafından silinebileceği veya URL'lerin değişebileceği projelerde kayıt bulunamama durumunu önceden düşünmek gerekir.
Özellikle:

  • ID değerlerini kontrol edin.
  • Slug değerlerini doğrulayın.
  • Soft Delete kullanımını kontrol edin.
  • Route Model Binding yapılandırmasını inceleyin.
  • Production veritabanını kontrol edin.
  • Gerekiyorsa özel 404 sayfası hazırlayın.

Sık Sorulan Sorular

1. Laravel Model Not Found hatası nedir? Laravel'in istediği Model kaydını bulamadığında oluşan hata durumudur.
2. Laravel findOrFail neden hata verir? Verilen ID ile eşleşen kayıt bulunamadığında findOrFail() exception oluşturur.
3. find() ile findOrFail() arasındaki fark nedir? find() kayıt yoksa null döndürürken findOrFail() kayıt bulunamadığında exception oluşturur.
4. Laravel firstOrFail ne işe yarar? Sorgunun ilk sonucunu döndürür, kayıt yoksa exception oluşturur.
5. Laravel Model Not Found nasıl çözülür? Öncelikle aranan ID, slug veya diğer kriterlerin veritabanında gerçekten mevcut olduğu kontrol edilmelidir.
6. Laravel'de kayıt olduğu halde Model bulunamıyor neden? Yanlış veritabanı, yanlış tablo, Soft Delete, yanlış Model veya yanlış primary key yapılandırması kontrol edilmelidir.
7. Laravel Route Model Binding neden 404 verir? URL'deki değer ilgili Model ile eşleşen bir kayıt bulamadığında 404 oluşabilir.
8. Laravel slug ile Model nasıl bulunur? where('slug', $slug)->firstOrFail() kullanılabilir veya Route Model Binding slug alanına göre yapılandırılabilir.
9. Laravel Soft Delete Model Not Found oluşturur mu? Evet. Soft Delete ile silinen kayıtlar normal sorgularda görünmeyebilir.
10. Soft Delete edilmiş kaydı nasıl bulabilirim? withTrashed() kullanarak silinmiş kayıtlar da sorguya dahil edilebilir.
11. Laravel Model hangi tabloyu kullanıyor nasıl öğrenilir? Model içerisinde $table tanımını veya Laravel'in varsayılan tablo isimlendirmesini kontrol edebilirsiniz.
12. Laravel primary key yanlışsa Model bulunamaz mı? Evet. Özel primary key kullanıldığı halde Model doğru yapılandırılmamışsa sorgular beklenmeyen sonuçlar verebilir.
13. Laravel API Model Not Found hatası neden oluşur? API isteğinde gönderilen ID veya slug ile eşleşen kayıt bulunamadığında oluşabilir.
14. Laravel'de kayıt yoksa 404 yerine başka sayfaya yönlendirebilir miyim? Evet. find() kullanarak sonucu kontrol edip uygulamanın ihtiyacına göre farklı bir response döndürülebilir.
15. Laravel özel 404 sayfası nasıl oluşturulur? resources/views/errors/404.blade.php dosyası oluşturularak özelleştirilebilir.
16. Laravel Model Not Found production'da neden oluşur? Production veritabanında ilgili kayıt bulunmayabilir veya uygulama yanlış database bağlantısına sahip olabilir.
17. Laravel migration eksikliği Model Not Found oluşturur mu? Doğrudan aynı hataya neden olması şart değildir ancak tablo ve veri yapısındaki problemler sorguların beklenen sonuçları vermemesine neden olabilir.
18. Laravel URL'deki ID yanlışsa ne olur? İlgili ID ile kayıt bulunamazsa findOrFail() veya Route Model Binding 404 sonucu oluşturabilir.
19. Laravel Model Not Found ile 404 aynı şey mi? Model Not Found bir kayıt bulunamama durumudur; Laravel bunu web uygulamasında çoğunlukla 404 yanıtına dönüştürür.
20. Laravel Model Not Found hatasında ilk ne kontrol edilmeli? İlk olarak URL'deki ID veya slug değerinin veritabanında mevcut olup olmadığı kontrol edilmelidir.

KONUNUZLA İLGİLİ ÖNERİ

Epik Müzayede — Canlı Müzayede Platformu

Antika, sanat eseri ve koleksiyon müzayedeleri için hazır yazılım. Laravel 12 üzerine kurulu, cPanel/paylaşımlı hostingde çalışacak şekilde tasarlandı.

Epik Yazılım
Kurucu

Web tasarım, SEO ve hosting üzerine 7+ yıl deneyimli, kurumsal projelere odaklanan içerik yazarı.

0.0 / 5 · 0 oy
Bu yazı faydalı oldu mu?
Hemen Arayın0552 291 08 91
Bize Yazıninfo@epikyazilim.com
Havale/EFT sonrasıÖdeme Bildirimi Yap
Rehber & CevaplarBilgi Bankası
Instagram WhatsApp