使用聚合方法,如 count, max, min, avg 及 sum。
$res=DB::table('question_user')->count();
$score=DB::table('question_score')->max('score');
$score= DB::table('question_score')->min('score');
$score= DB::table('question_score')->avg('score');
$total = DB::table('question_score')->sum('score');
但是对于复杂的情况(比如join 后的结果,其结果并不是个objet)。就不能直接使用上述的方法
解决方法:db::raw(’’) 有些时候您需要使用 raw expression 在查询语句里,这样的表达式会成为字串插入至查询中,因此要小心勿建立任何 SQL 注入的攻击点。要建立 raw expression,您可以使用 DB::raw 方法:
1、sum+join+groupBy eg:计算每个用户的总积分
$rankinglist = DB::table('question_user')->join('question_score', 'question_user.Id', '=', 'question_score.uid')->select(
DB::raw('SUM(question_score.score) as score,question_user.*')
)->groupBy("question_score.uid")->get()->toArray();
2.count+where+groupBy
$users = DB::table('question_user')
->select(DB::raw('count(*) as user_count, type'))
->where('type', '>', 1)
->groupBy('type')
->get()
->toArray();