Laravel Eloquent を使用した最新レコードのクエリ
特定のテーブル列内の各一意の値の最新レコードを取得するには、Laravel の Eloquent ORM堅牢なソリューションを提供します。シナリオとその雄弁な解決策を見てみましょう:
シナリオ:
「id」、「seller_id」、「」などの列を持つ「snapshot」という名前のテーブルを考えてみましょう。 amount」と「created_at」。目標は、個別の「seller_id」ごとに最新の行を取得することです。
Eloquent Query:
$latestSales = Snapshot::select('seller_id') ->groupBy('seller_id') ->havingRaw('MAX(created_at)') ->orderBy('created_at', 'DESC') ->get();
説明:
代替クエリ (生のクエリ):
必要に応じて、生の SQL クエリを利用して同じことを実現できます。 result:
SELECT * FROM snapshot WHERE (seller_id, created_at) IN ( SELECT seller_id, MAX(created_at) AS max_created_at FROM snapshot GROUP BY seller_id ) ORDER BY created_at DESC;
このクエリは、サブクエリを使用して各 "seller_id" の最新の行を特定し、各グループ内の最大の "created_at" 値を決定します。次に、「seller_id」と「created_at」の一致するペア (最新のレコードを表す) を持つ行が選択され、「created_at」の降順で並べ替えられ、各販売者の最新レコードのリストが作成されます。
以上がLaravel Eloquentで各固有の値の最新のレコードを取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。