Laravel Eloquent を使用してテーブル内の各固有の販売者の最新の行を取得するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-10-25 14:57:02
オリジナル
158 人が閲覧しました

How can I retrieve the latest row for each unique seller in a table using Laravel Eloquent?

Laravel Eloquent を使用して Max Created_at で最新の行を取得する

Laravel Eloquent では、一意のフィールドごとに最新の行を取得できます。包括的なアプローチ。売上を追跡する特定のテーブルで、各エントリに id、seller_id、amount、created_at などのフィールドが含まれている場合、目的は、個別の sell_id ごとに最新の行を取得することです。

最新の取得特定の販売者の行

特定の販売者の最新の行を取得するために、Laravel Eloquent は簡単な方法を提供します。

<code class="php">$sales = Snapshot::where('seller_id', '=', 15)
    ->orderBy('created_at', 'DESC')
    ->first();</code>
ログイン後にコピー

このクエリは、スナップショット テーブルからすべてのレコードを選択します。 sell_id は 15 に等しく、created_at に基づいて降順で並べ替え、最初の行を取得して、事実上、その販売者の最新の売上を返します。

各販売者の最新の行の取得

このアプローチを拡張して個々の販売者の最新の行を取得するには、より高度な戦略が必要になります。次の 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
ログイン後にコピー

このクエリでは、サブクエリ s1 が条件 s.created_at <🎜 に基づいてレコードを選択します。 s1.created_at: 後続の行の created_at タイムスタンプが新しいレコードのみが含まれるようにします。次に、外側のクエリは、サブクエリに一致する行がないメイン テーブルからすべての行を選択し、各 seller_id の最新レコードを効果的に分離します。

Laravel Eloquent でのクエリの実装

Laravel Eloquent を使用してこのクエリを実装するには、クエリ ビルダー メソッドを利用できます。

<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(DB::raw('s.created_at < s1.created_at'));
   })
  ->whereNull('s1.seller_id')
  ->get();</code>
ログイン後にコピー

このクエリは、スナップショット テーブルとサブクエリの間で左結合を実行することで SQL クエリの機能を複製します。 (s1) 各seller_idの後の行を識別します。 whereNull 条件は後続の行を持つ行をフィルターで除外し、各 seller_id の最新レコードのみを残します。このクエリを実行すると、テーブル内の各固有の販売者の最新の売上のコレクションが返されます。

以上がLaravel Eloquent を使用してテーブル内の各固有の販売者の最新の行を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!