Interview answer
Eager loading retrieves relationships upfront to avoid repeated database queries.
$users = User::with('orders')->get();
Instead of:
$users = User::all();
foreach ($users as $user) {
echo $user->orders->count();
}
The second version can produce an N+1 problem.
Nested eager loading:
$orders = Order::with([
'user',
'items.product'
])->get();
Constrained eager loading:
$users = User::with([
'orders' => function ($query) {
$query->where('status', 'paid');
}
])->get();
Scenario
On a page displaying 100 users and their orders, eager loading can reduce hundreds of relationship queries to a small number of queries.
0 comments:
Post a Comment
Thanks