首页 > 解决方案 > 如何获取重复数据的最后一条记录?

问题描述

我有 table A ( id - message - user_id ),我需要说明 table 中是否有任何user_id重复的只是带上用户添加的最后一个:

我的控制器代码(我的错误关闭):

$duplicate = VerfiyRequest::where('user_id', '>' , 1)->first();

$VerfiyRequests = VerfiyRequest::latest()->get();

return view('backend.VerfiyRequest.index' , compact('VerfiyRequests'));

标签: mysqllaraveleloquent

解决方案


使用它通过最新的 id(递增的主键)获取每个用户的最后一条记录:

VerfiyRequest::whereIn('id', function ($query) {
    $query
        ->from('verify_requests')
        ->select(DB::raw('MAX(id) as id'))
        ->groupBy('user_id');
})->get();

说明:MAX(id) as id选择id每个用户组的最新记录,因此内部查询返回每个用户的最新记录。


推荐阅读