İçeriğe geç

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.

<?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öngüde erişilen ilişkiyi sorguda eager load (with) ile önceden yükleyin.