【问题标题】:Laravel - three relationshipsLaravel - 三种关系
【发布时间】:2014-10-14 23:21:10
【问题描述】:

我有以下结构

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




OrdersItems  
 - id  
 - order_id  
 - events_id  
 - qty 


events  
- id  
- name  
- (and others)  

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

我需要做的是:
获取所有付费(!)数量的所有事件。因此,如果我有 2 个订单,每个订单有两个项目(总共 4 个),但只支付了一个订单,数量应该 show = 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) 与 orderitems qty 字段的总和不同。

标签: php laravel-4 many-to-many relationship one-to-many


【解决方案1】:

尝试使用 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();

【讨论】:

  • 就是这样!谢谢! :)
猜你喜欢
  • 2022-01-20
  • 1970-01-01
  • 2016-05-28
  • 1970-01-01
  • 2023-02-18
  • 1970-01-01
  • 1970-01-01
  • 2015-08-03
  • 1970-01-01
相关资源
最近更新 更多