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:
reventLazyLoading(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:
reventLazyLoading(!app()->isProduction()) eklemek N+1 hatalarını geliştirme aşamasında yakalar.