【发布时间】:2019-07-30 15:15:59
【问题描述】:
我正在尝试通过按关系分组的急切加载来获取数据。意味着,我想急切地加载列中的关系。这个代码我试过了,
$customer = Customer::with(['orders' => function($query) {
$query->groupBy('shop_id');
}])->where('id', $id)->get();
这里是数据库关系,
客户有很多订单(一对多)
例如,如果我想分组shop_id,我希望数据格式如下:
customer1 =>
otherProperties,
orders =>[
shop_id1 => [
order1,
order2 ...
],
shop_id2 => [
order5
]
]
但我得到的是正常的急切加载数据,例如,
customer1 =>
otherProperties,
orders => [
order1,
order2,
order5,
]
有人可以在这方面帮助我吗? 我可以使用原始查询或 php 获得类似的结果。但是我如何使用 eloquent 来实现这一点呢?
【问题讨论】:
-
您的 created_at 是通过迁移创建的默认时间戳吗?如果是这样,它看起来像这样
2016-09-21 18:50:26。因此,如果您的客户的订单在同一秒保存到数据库中,您将永远不会在同一个袋子里有 2 个订单。你可以看看这个:stackoverflow.com/questions/41483365/… -
这里,我使用
created_at只是为了演示。实际上我使用的是不同的列。我正在更新我的问题。我只是使用created_at来更好地理解。
标签: laravel group-by eloquent model relation