ホームページ >データベース >mysql チュートリアル >Laravel Eloquentを使用して各売り手の最新のトランザクションを効率的に選択するにはどうすればよいですか?

Laravel Eloquentを使用して各売り手の最新のトランザクションを効率的に選択するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-01 20:36:11330ブラウズ

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

Laravel Eloquent: 各 seller_id の最新の行をすべて選択する

トランザクションを含むテーブルを考えますrecords:

  • id
  • seller_id
  • amount
  • created_at

目的は最新のトランザクションを取得することです一意のseller_idごとに。特定の販売者の最新の取引を取得するのは簡単ですが、すべての販売者の最新レコードを抽出するのが課題です。

データベース クエリのアプローチ:

1 つの効率的な方法この方法は、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

このクエリは、自己結合し、後で created_at 時刻を持つレコードを除外します。

Laravel クエリ ビルダーのアプローチ:

Laravel クエリ ビルダーを使用して同じ結果を達成するには:

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();

このコードは SQL クエリと同様の自己結合手法を採用しており、それぞれの最新のトランザクションを返します。販売者ID.

以上がLaravel Eloquentを使用して各売り手の最新のトランザクションを効率的に選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。