Laravel Eloquent : récupérer toutes les lignes avec un maximum de 'created_at'
Dans Laravel, une exigence courante se pose lorsque vous devez récupérer uniquement la dernière lignes pour chaque valeur unique dans une colonne spécifique. Dans un tableau comme celui fourni, où chaque ligne représente une vente, vous souhaiterez peut-être obtenir la vente la plus récente pour chaque vendeur.
Pour y parvenir en utilisant Laravel Eloquent, une approche consiste à modifier la requête fournie dans la question :
$sales = Snapshot::leftJoin('snapshot as s1', function ($join) { $join->on('s.seller_id', '=', 's1.seller_id') ->whereRaw('s.created_at < s1.created_at'); }) ->whereNull('s1.seller_id') ->get();
Cette requête obtient le résultat souhaité en introduisant une jointure gauche à une copie de la table « instantané », alias « s1 ». La jointure est effectuée sur la base de la colonne « seller_id » et inclut une condition qui compare les valeurs «created_at» pour garantir que seules les dernières lignes de chaque vendeur sont sélectionnées.
La clause «whereNull» garantit que pour chaque vendeur, il n'y a pas de ligne suivante avec une valeur 'created_at' plus grande. Ceci identifie les lignes avec la valeur 'created_at' maximale pour chaque 'seller_id' unique. En appelant 'get()' sur la requête résultante, un tableau de toutes les dernières ventes regroupées par vendeur est obtenu.
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!