Laravel Eloquent Group Result in array



我有一个名为"grids"的表。列包括 id、floor 和网格。

id                 floor           grid
==========         =======       =======
1                     EG            LEFT
2                     EG            RIGHT
3                     DG            LEFT
4                     DG            RIGHT

当我通过以下方式获取所有数据时:

$data = Grid::all()

我有一个数组,其中 0 => 网格对象 1,1 =>网格对象 2,依此类推。

但是怎么可能将我的结果分组到这样的数组中:

$data = array(
        'EG' => array(
            'LEFT' => Grid Object 1,
            'RIGHT' => Grid Object 2,
        )
        'DG' => array(
            'LEFT' => Grid Object 3,
            'RIGHT' => Grid Object 4,
        )
    )

提前致谢

从目前的Laravel版本开始,你可以使用groupBy 函数

$data = $data->groupBy('floor');

会给你所需的数组

我认为您必须手动执行此操作。意义循环通过集合并构建新结构

$result = array();
foreach($data as $d){
    if(!isset($result[$d->floor])){
        $result[$d->floor] = array();
    }
    $result[$d->floor][$d->grid] = $d;
}