ホームページ >データベース >mysql チュートリアル >Laravel Eloquentを使用して各売り手の最新のトランザクションを効率的に選択するにはどうすればよいですか?
Laravel Eloquent: 各 seller_id の最新の行をすべて選択する
トランザクションを含むテーブルを考えますrecords:
目的は最新のトランザクションを取得することです一意の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 サイトの他の関連記事を参照してください。