关于laravel 先排序后分组怎么写

原生我知道,但是用laravel的方式我写不出来,因为后面还要分页,自己写分页太麻烦了,哪位大神说说,谢谢!
下列为原生的sql

select * from (select f.id,f.user_id,u.nickname,f.sign,f.content,f.status,f.user_ip,f.set_time from feedback as f,users as u where f.user_id=u.id order by set_time desc)as t group by t.user_id

阅读 4.8k
1 个回答

字段有点不一样,你自己改一下

DB::enableQueryLog();

$subQuery = DB::table(DB::raw('`feedback` as f,`users` as u'))
    ->where('f.user_id', '=', DB::raw('`u`.`id`'))
    ->orderBy('f.created_at', 'desc')
    ->select(['f.id', 'f.user_id', 'u.name', 'f.content', 'f.created_at']);
$query = DB::table(DB::raw("({$subQuery->toSql()}) as t"))
    ->mergeBindings($subQuery)
    ->groupBy('t.user_id')
    ->get(['t.*']);

$result = DB::getQueryLog();

print_r($result);

打印的结果:

Array
(
    [0] => Array
        (
            [query] => select `t`.* from (select `f`.`id`, `f`.`user_id`, `u`.`name`, `f`.`content`, `f`.`created_at` from `feedback` as f,`users` as u where `f`.`user_id` = `u`.`id` order by `f`.`created_at` desc) as t group by `t`.`user_id`
            [bindings] => Array
                (
                )

            [time] => 112.89
        )

)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题