Laravel Eloquent: 最大の 'created_at' を持つすべての行を取得する
Laravel では、最新のもののみを取得する必要がある場合に共通の要件が発生します。特定の列の一意の値ごとに行。提供されているテーブルのような、各行が売上を表すテーブルでは、各販売者の最新の売上を取得したい場合があります。
Laravel Eloquent を使用してこれを実現するには、1 つのアプローチは、提供されているクエリを変更することです。質問:
$sales = Snapshot::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();
このクエリは、「スナップショット」テーブルのコピーに左結合を導入することによって、目的の結果を達成します。 「s1」。結合は「seller_id」列に基づいて実行され、「created_at」値を比較して各販売者の最新の行のみが確実に選択されるようにする条件が含まれています。
「whereNull」句は、各販売者のそれを保証します。販売者にとって、これより大きな「created_at」値を持つ後続の行はありません。これにより、一意の「seller_id」ごとに最大の「created_at」値を持つ行が識別されます。結果のクエリで「get()」を呼び出すと、販売者ごとにグループ化されたすべての最新の売上の配列が取得されます。
以上がLaravel Eloquentを使用して、一意の販売者IDごとに最新の行のみを取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。