Laravel使用構建器來生成原生sql語句來對總和排序

NO IMAGE

我們在使用laravel時,會有一些特殊情況,例如我們有個考試成績表,上面有多次考試,有多個學生,怎麼實現拿到單個學生的單次考試成績總和以便進行排序呢?

$students = ScoreView::where("classid",$class_id)->where("examid",$id)
->selectRaw('studentnum,studentname,sum(score) as scoresum')  //使用原生sql,計算總和,別名叫做scoresum,同理還有whereRaw等,只要加了Raw就可以用原生語句
->groupBy('studentnum')  //根據學生來分組
->orderby("scoresum","desc")->get(); //orderByRaw('scoresum desc')這種寫法也可以

這樣就能拿到我們需要的,前面那個scoreview是model.代表一張資料表,現在我們這樣就把laravel和原生sql結合起來了。