且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Laravel Eloquent 选择最大 created_at 的所有行

更新时间:2022-11-19 12:07:59

要获取每个seller_id的最新记录,您可以使用以下查询

To get latest record for each seller_id you can use following query

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

使用查询构建器,您可以将其重写为

Using query builder you might rewrite it as

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();