Laravel Eloquent'te N+1 Sorunu Nasıl Bulunur ve Çözülür?

  • Konbuyu başlatan Konbuyu başlatan sysuser
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 17

sysuser

PREMİUM
Katılım
9 Kas 2025
Mesajlar
174
Tepki puanı
4
Cinsiyet
Kadın

Laravel Eloquent'te N+1 Sorunu Nasıl Bulunur ve Çözülür?​


N+1 sorunu ORM kullanan her projede karşılaşılan klasik bir performans tuzağıdır. 100 kullanıcıyı listelerken 101 sorgu çalışıyorsa bu problemi yaşıyorsunuzdur.

Sorun Nasıl Oluşur?​

PHP:
$users = User::all();
foreach ($users as $user) {
    echo $user->profile->bio; // Her kullanıcı için ayrı bir SELECT çalışır
}

Eager Loading ile Çözüm​

PHP:
$users = User::with('profile')->get();
foreach ($users as $user) {
    echo $user->profile->bio; // Tek sorguda tüm profiller yüklendi
}

Tespit Araçları​

  • Laravel Debugbar: geliştirme ortamında tüm sorguları listeler
  • Model::preventLazyLoading(true): lazy loading girişimini hata olarak işaretler
  • Telescope: production'da yavaş sayfa tespiti için kullanılır

Yeni projelerde AppServiceProvider içine Model::preventLazyLoading(!app()->isProduction()) eklemek N+1 hatalarını geliştirme aşamasında yakalar.
 
Geri
Üst