Laravel:行

时间:2017-08-19 16:22:12

标签: laravel laravel-5 laravel-eloquent

我有一个名为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中完成所有操作,因此反对进行一些后期处理。

1 个答案:

答案 0 :(得分:1)

laravel集合方法groupBy就是这样做的。

  

groupBy方法按给定键对集合的项目进行分组:

$orders = Order::get()->groupBy('offer_id');

这是有效的,因为查询构建器返回一个集合,您可以将集合助手链接到此对象上以获得所需的结果。

Laravel site

上的文档