Döngüde Lazy Load (ARCH7059)
Anahtar php.orm.lazy-load-in-loop · Önem warning · Kategori orm
İterasyon edilen koleksiyonun her öğesinde tembel yüklenen bir ilişkiye erişmek, eager load atlandığında N+1’i çalışma anında tetikler. Her erişim sessizce ek bir sorgu çalıştırır.
Hatalı
Bölüm başlığı “Hatalı”<?php$invoices = Invoice::get();foreach ($invoices as $invoice) { $total = $invoice->lineItems->sum('amount'); // her turda lazy sorgu}<?php$invoices = Invoice::with('lineItems')->get();foreach ($invoices as $invoice) { $total = $invoice->lineItems->sum('amount'); // önceden yüklendi}Düzeltme
Bölüm başlığı “Düzeltme”Döngüde erişilen ilişkiyi sorguda eager load (with) ile önceden yükleyin.