ホームページ > データベース > mysql チュートリアル > Laravel の結果を関係数で並べ替えるにはどうすればよいですか?

Laravel の結果を関係数で並べ替えるにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-12 21:12:02
オリジナル
536 人が閲覧しました

How to Order Laravel Results by Relationship Count?

Laravel: 関係数による結果の並べ替え

多対多の関係における関連レコードの数によってデータベースの結果を並べ替えるのは、複雑なタスクになる可能性があります。このようなシナリオの解決策を検討してみましょう。

次のデータベース スキーマを考えてみましょう:

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート