データベースルールで選択フィールドのいずれかを集計関数の外に置くことが許可されていない場合、グループ化は機能しません。代わりに、laravelコレクションを使用してください。
$users = DB::table('users')
->select('id','name', 'email')
->get();
foreach($users->unique('name') as $user){
}
大規模なコレクションのパフォーマンスでは、これはあまり良くないかもしれないと誰かが指摘しました。コレクションにキーを追加することをお勧めします。使用するメソッドはkeyByと呼ばれます。これは簡単な方法です。
$users = DB::table('users')
->select('id','name', 'email')
->get()
->keyBy('name');
keyByを使用すると、より複雑なもののコールバック関数を追加することもできます...
$users = DB::table('users')
->select('id','name', 'email')
->get()
->keyBy(function($user){
return $user->name . '-' . $user->id;
});
大規模なコレクションを反復処理する必要がある場合は、コレクションにキーを追加すると、パフォーマンスの問題が解決します。