Laravel雄辩的PHP如何使用唯一的列值作为键获取MySQL表中的所有行

Laravel雄辩的PHP如何使用唯一的列值作为键获取MySQL表中的所有行,php,mysql,laravel,orm,eloquent,Php,Mysql,Laravel,Orm,Eloquent,我正在使用Laravel雄辩的ORM从MySQL数据库检索数据。我希望从表中获取所有行,其中我选择的某个列的唯一值用作键,其中每个键包含一个对象数组(每个对象是一行,列值等于该键)。我使用的是Elount的模型 我尝试使用Laravel文档中的keyBy方法,但在新集合中只有一行。我想要新集合中的所有行 例如: food table name | type apple | fruit banana | fruit asparagus | vegetable broccoli | vegetabl

我正在使用Laravel雄辩的ORM从MySQL数据库检索数据。我希望从表中获取所有行,其中我选择的某个列的唯一值用作键,其中每个键包含一个对象数组(每个对象是一行,列值等于该键)。我使用的是Elount的模型

我尝试使用Laravel文档中的keyBy方法,但在新集合中只有一行。我想要新集合中的所有行

例如:

food table
name | type
apple | fruit
banana | fruit
asparagus | vegetable
broccoli | vegetable
我想回去

{"fruit": [{"name": "apple", "type": "fruit"}, {"name": "banana", "type": "fruit"}], "vegetable": [{"name": "asparagus", "type": "vegetable"}, {"name": "broccoli", "type": "vegetable"}]}
相反,当我这样做时,它会为每个键返回一个对象

Food::all()->keyBy('type')

是否有一种简单的方法可以从表中获取所有行并根据它们的键(即我指定的列值)将它们放入数组?

您可以在Laravel集合上使用groupBy(而不是雄辩的生成器)


这将为每种类型提供单独的集合。

您可以在Laravel集合(而不是雄辩的生成器)上使用groupBy

这将为每种类型提供单独的集合

$collection = Food::all();
$grouped = $collection->groupBy('type');