2017-06-13 10 views
0

私はLaravelのEloquent ORMを使用してMySQLデータベースからデータを取得しています。私は選択した特定の列の一意の値がキーとして機能するテーブルからすべての行を取得したいと思います。各キーはオブジェクトの配列を保持しています(各オブジェクトは列の値がそのキーと等しい行です)。私はEloquentのモデルを使用していますLaravel Eloquent PHPユニークな列の値をキーとしてMySQLテーブルのすべての行を取得する方法

私はLaravel docsからkeyByメソッドを使ってみましたが、新しいコレクションでは1つの行しか取得できませんでした。新しいコレクションのすべての行が必要です。

例:

私が代わりに

{"fruit": [{"name": "apple", "type": "fruit"}, {"name": "banana", "type": "fruit"}], "vegetable": [{"name": "asparagus", "type": "vegetable"}, {"name": "broccoli", "type": "vegetable"}]} 

戻りたい

food table 
name | type 
apple | fruit 
banana | fruit 
asparagus | vegetable 
broccoli | vegetable 

、それはだ、私は

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

がすべてを得るための簡単な方法はありませんキーごとに1つのオブジェクトを返しますテーブルからの行とそれらをキーに応じて配列に入れる別名、私が指定する列の値?

答えて

2

Laravel Collection(Eloquent Builderではなく)でgroupByを使用できます。

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

これにより、種類ごとに別々のコレクションが表示されます。

+0

あなたは英雄のデボンです、大きな感謝です – user3226932

関連する問題