ホームページ > データベース > mysql チュートリアル > Laravel Eloquentで各固有の値の最新のレコードを取得する方法は?

Laravel Eloquentで各固有の値の最新のレコードを取得する方法は?

Linda Hamilton
リリース: 2024-12-01 06:34:13
オリジナル
432 人が閲覧しました

How to Retrieve the Most Recent Record for Each Unique Value in Laravel Eloquent?

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();
ログイン後にコピー

説明:

  • groupBy('seller_id'): に基づいて結果をグループ化します。 「seller_id」列。一致する販売者 ID を持つ行をまとめて整理します。
  • havingRaw('MAX(created_at)'): 各販売者 ID グループ内で最大の「created_at」値を持つ行のみを含むように結果をフィルタリングします。 .
  • orderBy('created_at', 'DESC'): 各販売者 ID グループ内の結果を降順に並べます。 「created_at」。最新のレコードが最初に表示されるようにします。
  • 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート