Laravel:行分组
Laravel: Grouping of rows
我有一个名为 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 中完成所有这些工作,而不是进行一些 post 处理。
laravel 收集方法 groupBy
正是这样做的。
The groupBy method groups the collection's items by a given key:
$orders = Order::get()->groupBy('offer_id');
这是因为查询生成器 returns 一个集合,您可以将集合助手链接到这个对象上以获得所需的结果。
上找到的文档
我有一个名为 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 中完成所有这些工作,而不是进行一些 post 处理。
laravel 收集方法 groupBy
正是这样做的。
The groupBy method groups the collection's items by a given key:
$orders = Order::get()->groupBy('offer_id');
这是因为查询生成器 returns 一个集合,您可以将集合助手链接到这个对象上以获得所需的结果。
上找到的文档