ホームページ >バックエンド開発 >PHPチュートリアル >Laravel Eloquentで一意の「seller_id」ごとに最大の「created_at」を持つ行を選択する方法は?

Laravel Eloquentで一意の「seller_id」ごとに最大の「created_at」を持つ行を選択する方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-25 12:15:30386ブラウズ

How to Select Rows with the Maximum `created_at` for Each Unique `seller_id` in Laravel Eloquent?

Laravel Eloquent: 最大値 Created_at を持つ行を選択

Laravel Eloquent では、最大値を持つすべての行を選択する必要があるシナリオに遭遇する場合があります。テーブル内の一意の各eller_id の created_at 値。これを実現する方法は次のとおりです。

生の SQL クエリを使用する

1 つの方法は、生の SQL クエリを使用することです。これは、特定の状況ではより効率的である可能性があります。

<code class="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

クエリ ビルダーの使用

あるいは、よりオブジェクト指向のアプローチとして Laravel のクエリ ビルダーを利用することもできます。

<code class="php"> 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();</code>

どちらのメソッドもスナップショット テーブル内の各固有の sell_id の最新の行を表すオブジェクトのコレクションを返します。

以上がLaravel Eloquentで一意の「seller_id」ごとに最大の「created_at」を持つ行を選択する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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