鍍金池/ 問答/PHP/ 關(guān)于laravel 先排序后分組怎么寫

關(guān)于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

回答
編輯回答
尐潴豬

字段有點不一樣,你自己改一下

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);

打印的結(jié)果:

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
        )

)
2017年12月15日 20:00