SarkariResultess QA Bank

Laravel Eloquent me N+1 Query Problem ko kaise solve karein?

Laravel Published 25 Sept 2026 0 Views Verified

Consider karein aapke paas following code hai:

$posts = Post::latest()->get();

foreach ($posts as $post) {
    echo $post->author->name;
}

Agar bahut saare posts hain aur har post ka author alag query se load ho raha hai, to unnecessary database queries generate ho sakti hain.

Question: Is problem ko Laravel Eloquent ke recommended relationship loading approach se kaise improve kiya ja sakta hai?

Sarkari Result QA Bank
Editorially reviewed exam information

Answer & Explanation

6 Answers
Verified Correct Answer

A. with('author') ke saath Eager Loading use karna

$posts = Post::with('author')
    ->latest()
    ->get();

foreach ($posts as $post) {
    echo $post->author->name;
}
Additional Explanation

Ye correct answer hai. with('author') relationship ko eager load karne ke liye use hota hai. Isse application har individual post ke author ko lazily query karne ke bajay relationship data ko intentionally load kar sakti hai.

N+1 problem ka exact query count data aur relationship structure par depend karta hai, lekin eager loading repeated relationship lookups ko reduce karne ka standard Eloquent approach hai.

Verified

B. Har loop iteration me DB::query() call karna

foreach ($posts as $post) {
    $author = DB::table('users')
        ->where('id', $post->author_id)
        ->first();
}
Additional Explanation

Ye approach problem ko solve nahi karta. Ye explicitly har post ke liye additional database query chala sakta hai aur N+1 behavior ko aur obvious bana sakta hai.

Verified

C. Blade me relationship ko repeatedly query karna

@foreach ($posts as $post)
    {{ $post->author()->first()->name }}
@endforeach
Additional Explanation

View me repeated relationship query karna recommended optimization nahi hai. Presentation layer ko prepared data ke saath render karna chahiye.

Verified

D. Post model ko delete kar dena

Post::query()->delete();
Additional Explanation

Records delete karna N+1 query problem ka solution nahi hai. Isse application data destroy ho sakta hai aur original requirement bilkul address nahi hoti.

Verified

E. author relationship ko remove kar dena bina requirement samjhe

foreach ($posts as $post) {
    echo $post->title;
}
Additional Explanation

Relationship remove karne se author data hi available nahi rahega. Performance problem solve karne ke liye required data ko efficiently load karna chahiye, requirement ko delete nahi karna chahiye.

Verified

F. Har page request par same authors ko manually import karna

$authors = User::all();

foreach ($posts as $post) {
    // manually find author
}
Additional Explanation

Ye approach relationship loading ko efficiently express nahi karti aur unnecessary rows bhi load kar sakti hai. Eloquent eager loading ka explicit relationship-based approach cleaner aur generally more appropriate hai.