laravel 分组依据并获取组的最新记录

20jt8wwn  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(504)

我尝试将我的Swipesuser_id分组,然后我只需要每个user_id的最新(按created_atSwipe。因此,最后我只希望有按user_id的最新Swipes(集合),没有重复。
这怎么可能呢?
尝试了以下内容:Swipe::all()->sortBy('user_id')->unique('user_id')
但集团内最新记录不正确

ffscu2ro

ffscu2ro1#

您可以尝试使用groupBy和max方法来获得所需的结果:

$latestSwipes = Swipe::all()->groupBy('user_id')->map(function($swipes) {
return $swipes->max('created_at');
});

这将按user_id对所有刷卡进行分组,然后只返回每个组中具有最新created_at时间戳的刷卡。这将按user_id返回最新刷卡的集合,没有重复项。
或者,您可以使用sortByDesc和unique方法来取得类似的结果:

$latestSwipes = Swipe::all()->sortByDesc('created_at')->unique('user_id');

这将首先按照created_at timestamp以降序对刷卡进行排序,然后删除所有重复的user_id值,在集合中只保留每个user_id的最新刷卡。

相关问题