Laravel Nested Eager Loading on Polymorphic Relationships
Sometimes you need to eager load different relationships depending on the type of model on a polymorphic relationship.
For example: you have two type of users seller
and buyer
, the eager load relationship for seller
is the product
and the eager load relationship for buyer
is the order
.
- First setup the Models.
class Seller extends Model { public function products() { return $this->hasMany(Product::class); } }
class Buyer extends Model { public function orders() { return $this->hasMany(Order::class); } }
class Profile extends Model { public function user() { return $this->morphTo(); } }
- Then load the relations like the following:
Profile:with('user', function (MorphTo $morphTo) { // Eager load the products for seller. // Eager load the orders for buyer 👇 $morphTo->morphWith([ Seller::class => ['products'], Buyer::class => ['orders'], ]); })->get();
Top comments (1)
i spend a lot of time for find this solution. and finally im here. thank you!