我尝试将我的Swipes按user_id分组,然后我只需要每个user_id的最新(按created_at)Swipe。因此,最后我只希望有按user_id的最新Swipes(集合),没有重复。这怎么可能呢?尝试了以下内容:Swipe::all()->sortBy('user_id')->unique('user_id')但集团内最新记录不正确
Swipes
user_id
created_at
Swipe
Swipe::all()->sortBy('user_id')->unique('user_id')
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的最新刷卡。
1条答案
按热度按时间ffscu2ro1#
您可以尝试使用groupBy和max方法来获得所需的结果:
这将按user_id对所有刷卡进行分组,然后只返回每个组中具有最新created_at时间戳的刷卡。这将按user_id返回最新刷卡的集合,没有重复项。
或者,您可以使用sortByDesc和unique方法来取得类似的结果:
这将首先按照created_at timestamp以降序对刷卡进行排序,然后删除所有重复的user_id值,在集合中只保留每个user_id的最新刷卡。