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.
Hatalı
Bölüm başlığı “Hatalı”<?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}Düzeltme
Bölüm başlığı “Düzeltme”İlişkiyi döngüden önce eager load ile (with()) tek seferde yükleyin.