Maison > base de données > tutoriel mysql > Comment obtenir la ligne la plus récente pour chaque identifiant de vendeur à l'aide de Laravel Eloquent ?

Comment obtenir la ligne la plus récente pour chaque identifiant de vendeur à l'aide de Laravel Eloquent ?

Linda Hamilton
Libérer: 2024-11-29 08:47:09
original
1033 Les gens l'ont consulté

How to Get the Most Recent Row for Each Seller ID Using Laravel Eloquent?

Comment sélectionner la dernière ligne pour chaque Seller_ID à l'aide de Laravel Eloquent

Problème

Vous avez une table qui contient des données avec les colonnes seller_id etcreated_at. Vous souhaitez récupérer uniquement les dernières lignes pour chaque seller_id distinct.

Solution

En utilisant le générateur de requêtes de Laravel Eloquent, vous pouvez y parvenir en utilisant une jointure gauche et une condition WhereNull. Voici comment :

$subquery = DB::table('snapshot')
    ->where('seller_id', '=', 's1.seller_id')
    ->whereRaw('s.created_at < s1.created_at');

$query = DB::table('snapshot as s')
    ->select('s.*')
    ->leftJoinSub($subquery, 's1', function ($join) {
        $join->on('s.seller_id', '=', 's1.seller_id');
    })
    ->whereNull('s1.seller_id')
    ->get();
Copier après la connexion

Dans cette requête :

  1. La sous-requête identifie toutes les lignes de la table d'instantanés qui ont un horodatage de création_at postérieur à celui de la ligne actuelle.
  2. La jointure de gauche combine la ou les tables principales avec les résultats de la sous-requête (s1).
  3. La condition WhereNull élimine les lignes où existe une entrée correspondante dans la sous-requête. Cela filtre efficacement toutes les lignes sauf la dernière pour chaque seller_id.

En exécutant cette requête, vous obtiendrez une collection des dernières lignes pour chaque seller_id distinct dans la table d'instantanés.

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!

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