Maison > base de données > tutoriel mysql > Comment sélectionner efficacement la dernière transaction pour chaque vendeur à l'aide de Laravel Eloquent ?

Comment sélectionner efficacement la dernière transaction pour chaque vendeur à l'aide de Laravel Eloquent ?

Linda Hamilton
Libérer: 2024-12-01 20:36:11
original
334 Les gens l'ont consulté

How to Efficiently Select the Latest Transaction for Each Seller Using Laravel Eloquent?

Laravel Eloquent : sélection de toutes les dernières lignes pour chaque seller_id

Considérez une table qui contient une transaction records:

  • id
  • seller_id
  • amount
  • created_at

L'objectif est de récupérer la dernière transaction pour chaque seller_id unique. Bien qu'il soit simple d'obtenir la transaction la plus récente pour un vendeur spécifique, le défi réside dans l'extraction des derniers enregistrements pour tous les vendeurs.

Approche de requête de base de données :

Une approche efficace La méthode consiste à utiliser une requête 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
Copier après la connexion

Cette requête identifie la transaction la plus récente pour chaque seller_id en employant une auto-jointure et à l'exclusion des enregistrements avec une heure de création ultérieure.

Approche de Laravel Query Builder :

Pour obtenir le même résultat en utilisant Laravel Query Builder :

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

Ce code utilise une technique d'auto-jointure similaire à celle de la requête SQL, renvoyant la dernière transaction pour chaque seller_id.

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