Laravel 查询生成器分组到嵌套数组中
Laravel query builder group into nested arrays
我在我的项目中使用 Laravel 和查询生成器。
我有以下 table:
Table: worker_tasks
+--------+-----------+------------+---------------------+
| id | worker_id | task_id | started_at |
+--------+-----------+------------+---------------------+
| 227350 | 50765 | 2399 | 2021-12-02 12:24:38 |
| 227351 | 50765 | 1377 | 2021-12-12 09:34:22 |
| 227352 | 84245 | 2294 | 2021-12-07 10:37:11 |
+--------+-----------+------------+---------------------+
我希望将数据检索到嵌套数组的数组中,每个嵌套数组的键是 worker_id
。
在这种情况下,预期结果将是:
[
50765 => [
{
"task_id": 2399,
"started_at": "2021-12-02 12:24:38",
},
{
"task_id": 1377,
"started_at": "2021-12-12 09:34:22",
},
],
84245 => [
{
"task_id": 2294,
"started_at": "2021-12-07 10:37:11",
},
],
]
我尝试使用 keyBy 收集方法,但每个键只需要一个元素,如文档中所写:
If multiple items have the same key, only the last one will appear in the new collection
我想知道是否有直接的方法(使用一些内置的 Laravel 方法)。
使用GroupBy方法代替keyBy
我在我的项目中使用 Laravel 和查询生成器。
我有以下 table:
Table: worker_tasks
+--------+-----------+------------+---------------------+
| id | worker_id | task_id | started_at |
+--------+-----------+------------+---------------------+
| 227350 | 50765 | 2399 | 2021-12-02 12:24:38 |
| 227351 | 50765 | 1377 | 2021-12-12 09:34:22 |
| 227352 | 84245 | 2294 | 2021-12-07 10:37:11 |
+--------+-----------+------------+---------------------+
我希望将数据检索到嵌套数组的数组中,每个嵌套数组的键是 worker_id
。
在这种情况下,预期结果将是:
[
50765 => [
{
"task_id": 2399,
"started_at": "2021-12-02 12:24:38",
},
{
"task_id": 1377,
"started_at": "2021-12-12 09:34:22",
},
],
84245 => [
{
"task_id": 2294,
"started_at": "2021-12-07 10:37:11",
},
],
]
我尝试使用 keyBy 收集方法,但每个键只需要一个元素,如文档中所写:
If multiple items have the same key, only the last one will appear in the new collection
我想知道是否有直接的方法(使用一些内置的 Laravel 方法)。
使用GroupBy方法代替keyBy