İçeriğe geç

N+1 Sorgu (ARCH7050)

Anahtar php.orm.n-plus-one-query · Önem warning · Kategori orm

Döngünün her turunda ilişkili veriye erişerek ayrı bir sorgu tetiklemek, N+1 problemine yol açar. Her satır için bir veritabanı gidiş-dönüşü, çok büyük gecikme demektir.

<?php
$posts = Post::all();
foreach ($posts as $post) {
// her yineleme yeni bir sorgu çalıştırır
echo $post->author->name;
}
<?php
$posts = Post::with('author')->get();
foreach ($posts as $post) {
echo $post->author->name; // önceden yüklendi, ek sorgu yok
}

İlişkiyi döngüden önce eager load ile (with()) tek seferde yükleyin.