Maison > base de données > tutoriel mysql > Comment trier les résultats Laravel par nombre de relations ?

Comment trier les résultats Laravel par nombre de relations ?

Barbara Streisand
Libérer: 2024-11-12 21:12:02
original
535 Les gens l'ont consulté

How to Order Laravel Results by Relationship Count?

Laravel : trier les résultats par nombre de relations

Trier les résultats d'une base de données en fonction du nombre d'enregistrements associés dans une relation plusieurs-à-plusieurs peut être une tâche complexe. Explorons une solution pour un tel scénario.

Considérez le schéma de base de données suivant :

hackathons
    id
    name
    ...

hackathon_user
    hackathon_id
    user_id

users
    id
    name
Copier après la connexion

Pour récupérer les hackathons les plus populaires en fonction du nombre de participants, nous devons utiliser une requête de jointure et regroupez les résultats par ID de hackathon, en comptant le nombre de participants pour chaque hackathon. Ceci peut être réalisé en utilisant la requête suivante :

$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();
Copier après la connexion

Cette requête récupérera les hackathons classés en fonction du nombre de participants, le hackathon le plus populaire étant répertorié en premier.

Alternativement, si vous utilisez Eloquent de Laravel ORM, vous pouvez utiliser l'approche suivante :

Hackathon::withCount('participants')->orderBy('participants_count', 'desc')->get();
Copier après la connexion

Cette approche est plus pratique et plus simple, mais elle s'appuie sur la méthode withCount() d'Eloquent, qui peut ne pas être disponible dans les anciennes versions de Laravel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal