2016-08-17 11 views
0

group byを使用すると、結果はグループ化されますが、すべてが返されるわけではありません。ここには6つの結果がありますが、結果は5つしかありません。したがって、基本的にはroom_id = 17103というエントリを取得し、106というエントリは返されません。ここでLaravel - Eloquent group by

Data

私がやっているものです:

$prices = $hotel->prices()->groupBy('room_id')->get(); 
+0

もちろん、それは「GROUP BY」と同じです。あなたは何を達成したいですか? –

+0

@ThomasVanderVeen私は5つの結果を得たいと思います。そのうちの1つに2つの結果が含まれています。なぜなら、両方とも同じ 'room_id' – omarsafwany

答えて

0

あなたが望むようにグループ化する方法があります。クエリーを実行すると、コレクションの雄弁にはgroupBy()を返すことができます。トリックはgroupBy()にデータベースを取得した後です。詳細についてはthisをチェックしてください。

の例では、次のようになります。この配列のキーはroom_idを表します

[ 
    '39' => [ 
     // 1 row 
    ], 
    '40' => [ 
     // 1 row 
    ], 
    '17' => [ 
     // 2 rows 
    ], 
    ..... 
] 

:これがどのように見えるのコレクションになります

$prices = $hotel->prices()->get(); // Returns a Collection of results 

$prices = $prices->groupBy('room_id'); // Grouped by room_id 

。すべてのキーで、この配列は、指定されたroom_idを持つ行を含む別の配列になります。

これは役に立ちます:)