表模式
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();