”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在 Laravel Eloquent 中为每个唯一的“seller_id”选择具有最大“created_at”的行?

如何在 Laravel Eloquent 中为每个唯一的“seller_id”选择具有最大“created_at”的行?

发布于2024-11-06
浏览:139

How to Select Rows with the Maximum `created_at` for Each Unique `seller_id` in Laravel Eloquent?

Laravel Eloquent: Select Rows with Maximum Created_at

在 Laravel Eloquent 中,你可能会遇到需要选择所有具有最大值的行的场景表中每个唯一的 seller_id 的created_at 值。以下是实现此目的的方法:

使用原始 SQL 查询

一种方法是使用原始 SQL 查询,这在某些情况下可能更有效:

select s.*
from snapshot s
left join snapshot s1 on s.seller_id = s1.seller_id
and s.created_at 

使用查询生成器

或者,您可以利用 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 whereNull('s1.seller_id')
  ->get();

这两种方法都会返回代表快照表中每个唯一 seller_id 的最新行的对象集合。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3