Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memesan Keputusan Laravel mengikut Kiraan Perhubungan?

Bagaimana untuk Memesan Keputusan Laravel mengikut Kiraan Perhubungan?

Barbara Streisand
Lepaskan: 2024-11-12 21:12:02
asal
547 orang telah melayarinya

How to Order Laravel Results by Relationship Count?

Laravel: Keputusan Pesanan mengikut Kiraan Perhubungan

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
Salin selepas log masuk

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();
Salin selepas log masuk

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();
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan