我有以下结构
Orders
- id
- users_id
- orderPaid (can be 1 or 0)
OrdersItems
- id
- order_id
- events_id
- qty
events
- id
- name
- (and others)
关系
一个订单有很多订单。一个Orderitem属于订单。
一个事件有很多Orderitems。一个Orderitem属于事件。
我需要做的是:
通过所有付费(!)数量来获取所有活动。因此,如果我有2个订单,每个订单包含两个项目(共4个)但只支付了一个订单,则数量显示= 2 而不是4
代码:
$events = Main::with(['clients','events.orderitems'])->where('id', $id)->first();
foreach($events->events as $events) {
$events->orderscount = count($events->orderitems);
}
成功地给了我总数量,但是如果orderPaid = 1
我只需要数量我该怎么做?每一个帮助都是值得赞赏的
答案 0 :(得分:3)
尝试使用Eloquent eager load constraints(这将添加子查询):
$events = Main::with(['clients', 'events.orderitems' => function($query) {
$query->whereIn('order_id', function($query) {
$query->select('id')->from('orders')->where('orderPaid', 1);
});
}])->where('id', $id)->first();