Laravel Eloquent:为每个 seller_id 选择所有最新行
考虑一个包含交易的表记录:
目标是检索最新的交易对于每个唯一的 seller_id。虽然获取特定卖家的最新交易很简单,但挑战在于提取所有卖家的最新记录。
数据库查询方法:
一种高效的方法方法是利用 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 查询生成器方法:
使用 Laravel 查询生成器实现相同的结果:
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();
这段代码采用了与 SQL 查询类似的自连接技术,返回每个交易的最新交易seller_id。
以上是如何使用 Laravel Eloquent 高效地为每个卖家选择最新交易?的详细内容。更多信息请关注PHP中文网其他相关文章!