Laravel Eloquentを使用して各販売者の最新のスナップショットを取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-26 13:55:02
オリジナル
178 人が閲覧しました

How to Fetch the Latest Snapshot for Each Seller Using Laravel Eloquent?

販売者別にグループ化された最新の行を選択するための雄弁なクエリ

created_at タイムスタンプを含む販売者関連情報で構成されるテーブルがある場合、多くの場合、次のことが必要になります。各販売者の最新のエントリのみを取得します。このタスクは、Laravel Eloquent を使用して効果的に実行できます。

これを実現するには、左結合と NULL マッチングを使用して各 seller_id の最新の行を識別する MySQL サブクエリを使用できます。このサブクエリを Eloquent と組み合わせて使用​​すると、目的のデータを取得できます。

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

このクエリは、サブクエリを使用して各一意の seller_id の最新のスナップショット行を取得し、返された結果が各販売者の最新情報を表すことを保証します。

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

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