ホームページ >バックエンド開発 >PHPチュートリアル >Laravel Eloquentで一意の「seller_id」ごとに最大の「created_at」を持つ行を選択する方法は?
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 サイトの他の関連記事を参照してください。