关于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

阅读 5k
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
        )

)
推荐问题