데이터베이스 규칙에서 선택 필드가 집계 함수 외부에있는 것을 허용하지 않는 경우 그룹화 기준이 작동하지 않습니다. 대신 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;
});
대규모 컬렉션을 반복해야하는 경우 여기에 키를 추가하면 성능 문제가 해결됩니다.