我正在使用Laravel的Eloquent ORM从MySQL数据库中检索数据。我想从表中获取所有行,其中我选择的某列的唯一值用作键,其中每个键包含一个对象数组(每个对象是一列,其列值等于该键)。我正在使用Eloquent的模型
我尝试使用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')
是否有一种简单的方法可以从表中获取所有行并将它们放入数组中,具体取决于它们的键,即我指定的列值?
答案 0 :(得分:2)
您可以在Laravel Collection(而不是Eloquent构建器)上使用groupBy。
$collection = Food::all();
$grouped = $collection->groupBy('type');
这将为每种类型提供单独的集合。