在 Laravel Eloquent 中检索每个卖家 ID 的最新行
本文解决了在 Laravel Eloquent 中检索每个唯一卖家的最新行的挑战一个数据库表。我们将探索使用 Laravel Eloquent ORM 来实现这一目标的解决方案。
给定的表包含销售数据,包括卖家 ID、金额和创建时间戳。要获取特定卖家的最新行,查询可以编写为:
<code class="php">$sales = Snapshot::where('seller_id', '=', 15) ->orderBy('created_at', 'DESC') ->first();</code>
为了扩展此功能以检索所有卖家的最新行,我们采用更高级的查询。以下查询使用子查询来识别每个卖家的最新行:
<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 的查询构建器中使用此查询,可以实现以下代码:
<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>
通过通过此解决方案,您可以高效地检索数据库表中每个卖家的最新行,从而方便地访问应用程序的最新数据。
以上是如何在 Laravel Eloquent 中检索每个卖家的最新行?的详细内容。更多信息请关注PHP中文网其他相关文章!