我有一个名为Order
的模型,如此:
class Order extends Model
{
public function offer()
{
return $this->belongsTo(Offer::class);
}
}
示例行可能如下所示
id quantity offer_id
15 5 20
20 1 21
25 3 20
30 2 27
35 1 20
40 1 21
我想使用Laravel Eloquent按offer_id
对所有订单进行分组,以提供以下输出:
[
[20] => [
// order 15,
// order 25,
// order 35,
],
[21] => [
// order 20,
// order 40,
]
[27] => [
// order 30,
]
]
我该如何有效地做到这一点?我尝试过以下方法:
Order::groupBy('offer_id)->get();
但这只是隐藏了相同offer_id
的订单。
请注意,我最好在Laravel Elqouent中完成所有操作,因此反对进行一些后期处理。
答案 0 :(得分:1)
laravel集合方法groupBy
就是这样做的。
groupBy方法按给定键对集合的项目进行分组:
$orders = Order::get()->groupBy('offer_id');
这是有效的,因为查询构建器返回一个集合,您可以将集合助手链接到此对象上以获得所需的结果。
上的文档