News

Eager Load Pivot Relations

Published
Eager Load Pivot Relations image

Arjon Jason Castro created a package for eager-loading pivot relations (BelongsToMany), which can help avoid N+1 queries on the pivot model.

Once you’re model has the EagerLoadPivotTrait you can eager load them as follows:

$plan = Plan::with('items.pivot.unit')->find($id);
$plans = Plan::with('items.pivot.unit')->get();
 
// Load other relations as well
$plans = Plan::with([
'items.pivot.unit',
'items.pivot.unit.someRelation',
])->get();

You can also customize the name of the pivot model accessor:

class Plan extends \Eloquent
{
public function items()
{
return $this->belongsToMany('Item', 'plan_item')
->withPivot('unit_id', 'qty', 'price')
->using('PlanItem')
->as('planItem');
}
}
 
$plan = Plan::with('items.planItem.unit')->get();
 
foreach ($plan->items as $item) {
echo $item->planItem->unit->name
}

Check out the package’s readme for installation instructions and documentation. The author has an example project to demonstrate using this package.

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Filed in

Sponsored

acquaintsoft logo
Acquaint Softtech

Hire Laravel developers with AI expertise at $20/hr. Get started in 48 hours.

Visit Acquaint Softtech

The latest

View all →
Securing Filament plugins with Plumb image

Securing Filament plugins with Plumb

Read article
LayaPHP: Self-Hosted Text Classification for PHP and Laravel image

LayaPHP: Self-Hosted Text Classification for PHP and Laravel

Read article
WhenMounted and BigInt Props in Inertia.js v3.8 image

WhenMounted and BigInt Props in Inertia.js v3.8

Read article
Postcodes for Laravel: GB Postcode Lookup and Geography Data image

Postcodes for Laravel: GB Postcode Lookup and Geography Data

Read article
Laravel 14 Adds a defaults() Method to Eloquent Models image

Laravel 14 Adds a defaults() Method to Eloquent Models

Read article
Laravel AI SDK and Laravel MCP Security Fixes: Update Now image

Laravel AI SDK and Laravel MCP Security Fixes: Update Now

Read article