다대다 관계에서 관련 레코드 수에 따라 데이터베이스 결과를 정렬하는 것은 복잡한 작업이 될 수 있습니다. 이러한 시나리오에 대한 솔루션을 살펴보겠습니다.
다음 데이터베이스 스키마를 고려하십시오.
hackathons id name ... hackathon_user hackathon_id user_id users id name
참가자 수를 기준으로 가장 인기 있는 해커톤을 검색하려면 조인 쿼리를 사용해야 합니다. 각 해커톤의 참가자 수를 계산하여 결과를 해커톤 ID별로 그룹화합니다. 이는 다음 쿼리를 사용하여 수행할 수 있습니다.
$hackathons = DB::table('hackathons') ->join('hackathon_user', 'hackathon_user.hackathon_id', '=', 'hackathons.id') ->groupBy('hackathon_user.hackathon_id') ->select('hackathons.id', 'hackathons.name', DB::raw('COUNT(*) as participant_count')) ->orderBy('participant_count', 'desc') ->get();
이 쿼리는 참가자 수에 따라 정렬된 해커톤을 가져오며 가장 인기 있는 해커톤이 먼저 나열됩니다.
또는 Laravel의 Eloquent를 사용하는 경우 ORM에서는 다음 접근 방식을 사용할 수 있습니다.
Hackathon::withCount('participants')->orderBy('participants_count', 'desc')->get();
이 접근 방식은 더 편리하고 간단하지만 이는 Eloquent의 withCount() 메소드를 사용하는데, 이는 이전 버전의 Laravel에서는 사용하지 못할 수도 있습니다.
위 내용은 관계 수에 따라 Laravel 결과를 주문하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!