Sélection de toutes les lignes avec une valeur créée_at maximale pour chaque vendeur_id dans Laravel Eloquent
Votre tableau contient une liste de transactions de vente avec des colonnes comprenant l'identifiant, seller_id, montant et create_at. Pour récupérer la ligne la plus récente pour chaque seller_id unique, vous pouvez utiliser les techniques suivantes :
À l'aide d'une requête SQL
Pour exécuter directement une requête SQL personnalisée, vous pouvez utilisez la façade DB dans Laravel :
$latestSales = DB::select(DB::raw(' SELECT s.* FROM snapshot s LEFT JOIN snapshot s1 ON s.seller_id = s1.seller_id AND s.created_at < s1.created_at WHERE s1.seller_id IS NULL '));
Utilisation d'une requête éloquente Builder
Vous pouvez également utiliser le générateur de requêtes de Laravel pour obtenir le même résultat :
$latestSales = DB::table('snapshot as s') ->select('s.*') ->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();
Les deux techniques récupéreront toutes les lignes avec des valeurs create_at maximales pour toutes les valeurs seller_id uniques dans votre table.
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!