Laravel - 三个关联关系

4

我有以下结构:

Orders  
 - id  
 - users_id  
 - orderPaid (can be 1 or 0) 




OrdersItems  
 - id  
 - order_id  
 - events_id  
 - qty 


events  
- id  
- name  
- (and others)  

关系
一个订单有多个订单项。一个订单项属于一个订单。
一个事件有多个订单项。一个订单项属于一个事件。

我需要做的是:
获取所有已支付数量为全部的事件。因此,如果我有两个每个都有两件商品的订单(总共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时的数量。

我该怎么做?非常感谢您的帮助。


重新表达您想要实现的目标。count(orderitems)与订单项qty字段的总和不同。 - Jarek Tkaczyk
1个回答

3
尝试使用Eloquent的急切加载约束条件(这将添加一个子查询):http://laravel.com/docs/4.2/eloquent#eager-loading
$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();

就是这样!谢谢! :) - Marek123

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接