Memesan keputusan pangkalan data mengikut kiraan rekod berkaitan dalam perhubungan banyak-ke-banyak boleh menjadi tugas yang rumit. Mari kita terokai penyelesaian untuk senario sedemikian.
Pertimbangkan skema pangkalan data berikut:
hackathons id name ... hackathon_user hackathon_id user_id users id name
Untuk mendapatkan hackathon paling popular berdasarkan bilangan peserta, kita perlu menggunakan pertanyaan penyertaan dan kumpulkan keputusan mengikut ID hackathon, mengira bilangan peserta untuk setiap hackathon. Ini boleh dicapai menggunakan pertanyaan berikut:
$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();
Pertanyaan ini akan mengambil hackathon yang dipesan mengikut kiraan peserta, dengan hackathon paling popular disenaraikan dahulu.
Sebagai alternatif, jika menggunakan Laravel's Eloquent ORM, anda boleh menggunakan pendekatan berikut:
Hackathon::withCount('participants')->orderBy('participants_count', 'desc')->get();
Pendekatan ini lebih mudah dan mudah, tetapi ia bergantung pada kaedah withCount() Eloquent, yang mungkin tidak tersedia dalam versi lama Laravel.
Atas ialah kandungan terperinci Bagaimana untuk Memesan Keputusan Laravel mengikut Kiraan Perhubungan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!