首页 >数据库 >mysql教程 >如何使用 Laravel Eloquent 获取每个卖家 ID 的最新行?

如何使用 Laravel Eloquent 获取每个卖家 ID 的最新行?

Linda Hamilton
Linda Hamilton原创
2024-11-29 08:47:091023浏览

How to Get the Most Recent Row for Each Seller ID Using Laravel Eloquent?

如何使用 Laravel Eloquent 为每个 Seller_ID 选择最新行

问题

您有一个包含 seller_id 和created_at 列数据的表。您只想检索每个不同 seller_id 的最新行。

解决方案

使用 Laravel Eloquent 的查询构建器,您可以通过使用左连接和 whereNull 条件来实现此目的。操作方法如下:

$subquery = DB::table('snapshot')
    ->where('seller_id', '=', 's1.seller_id')
    ->whereRaw('s.created_at < s1.created_at');

$query = DB::table('snapshot as s')
    ->select('s.*')
    ->leftJoinSub($subquery, 's1', function ($join) {
        $join->on('s.seller_id', '=', 's1.seller_id');
    })
    ->whereNull('s1.seller_id')
    ->get();

在此查询中:

  1. 子查询标识快照表中 create_at 时间戳晚于当前行的所有行。
  2. 左连接将主表(s)与子查询结果(s1)结合起来。
  3. whereNull条件消除子查询中存在相应条目的行。这有效地过滤掉了除每个 seller_id 的最新行之外的所有行。

通过执行此查询,您将获得快照表中每个不同 seller_id 的最新行的集合。

以上是如何使用 Laravel Eloquent 获取每个卖家 ID 的最新行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn