在sql laravel中如何在一个查询中得到两个和

hgc7kmma  于 2023-03-04  发布在  其他
关注(0)|答案(1)|浏览(137)

我想实现2结果(聚合函数)在单一查询在laravel。

$user=Auth::guard('api')->user(); 
$data['current_month_score']= UserScore::whereMonth('created_at',now()->month)->where('user_id',$user->id)->sum('score');
$data['current_month_score']= UserScore::where('user_id',$user->id)->sum('score');

这给了我正确的结果,但我想在1个查询中实现这一点。
如果是,这可能吗?

eyh26e7m

eyh26e7m1#

$user = Auth::guard('api')->user(); 
$data = UserScore::selectRaw('SUM(CASE WHEN MONTH(created_at) = ? THEN score ELSE 0 END) AS current_month_score, SUM(score) AS total_score', [now()->month])
                 ->where('user_id', $user->id)
                 ->first();

$data变量将包含一个具有两个属性的对象:current_month_scoretotal_score。您可以使用$data-〉current_month_score和$data-〉total_score访问这些值。

相关问题