Laravel Eloquent : sélectionnez les lignes avec le maximum Created_at
Dans Laravel Eloquent, vous pouvez rencontrer des scénarios dans lesquels vous devez sélectionner toutes les lignes avec le maximum valeur create_at pour chaque seller_id unique dans une table. Voici comment y parvenir :
Utilisation d'une requête SQL brute
Une approche consiste à utiliser une requête SQL brute, qui pourrait être plus efficace dans certaines circonstances :
<code class="sql">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 du générateur de requêtes
Vous pouvez également utiliser le générateur de requêtes de Laravel pour une approche plus orientée objet :
<code class="php"> 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();</code>
Les deux méthodes renvoie une collection d'objets représentant les dernières lignes pour chaque seller_id unique 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!