ホームページ >データベース >mysql チュートリアル >Laravel Eloquentを使用して各販売者IDの最新の行を取得するにはどうすればよいですか?

Laravel Eloquentを使用して各販売者IDの最新の行を取得するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-29 08:47:09953ブラウズ

How to Get the Most Recent Row for Each Seller ID Using Laravel Eloquent?

Laravel Eloquent を使用して各 Seller_ID の最新の行を選択する方法

問題

seller_id 列と created_at 列を持つデータを含むテーブルがあります。個別のseller_idごとに最新の行のみを取得したいとします。

解決策

Laravel Eloquentのクエリビルダーを使用すると、左結合とwhereNull条件を採用することでこれを実現できます。方法は次のとおりです:

$subquery = DB::table('snapshot')
    ->where('seller_id', '=', 's1.seller_id')
    ->whereRaw('s.created_at < s1.created_at');

$query = DB::table('snapshot as s')
    ->select('s.*')
    ->leftJoinSub($subquery, 's1', function ($join) {
        $join->on('s.seller_id', '=', 's1.seller_id');
    })
    ->whereNull('s1.seller_id')
    ->get();

このクエリ内:

  1. サブクエリは、現在の行よりも後の created_at タイムスタンプを持つスナップショット テーブル内のすべての行を識別します。
  2. 左結合はメインテーブルとサブクエリの結果を結合します。 (s1).
  3. whereNull 条件は、サブクエリ内の対応するエントリが存在する行を削除します。これにより、各 seller_id の最新行を除くすべての行が効果的に除外されます。

このクエリを実行すると、スナップショット テーブル内の個別の sell_id ごとに最新の行のコレクションが取得されます。

以上がLaravel Eloquentを使用して各販売者IDの最新の行を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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