如何在Laravel中定义三元关系



表模式

Items
id
name
:belongsToMany(Addon) // relations
Addons
id
name
:belongsToMany(Item) // relations
addon_item
addon_id
item_id
orders
id
:hasMany(Item) // relations
item_order
item_id
order_id
name    // extra pivot attr
price   // extra pivot attr
qty     // extra pivot attr

现在我如何定义订单之间的关系->项目&插件这样我就可以像Orders::all()->items()->orderedAddons一样获得它(在这里,我只想获得有序的插件,而不是项目具有的所有插件(

您可以使用with()来筛选addons,并使用has()来添加addons必须具有orders关系的条件。

Item::with(['addons' => function ($query) {
$query->has('items.orders');
}])
->get();

如果您希望所有订单的商品条件相同,您可以添加另一个with()

Order::with(['items' => function ($query) {
$query->with(['addons' => function ($query) {
$query->has('items.orders');
}])
}])
->get();

最新更新