首页 > 解决方案 > 使用 if 在 laravel 中查找 avg

问题描述

我想使用 if 显示 count avg,但不工作,

这是我的代码,

public function update(Request $request,Pt $pt)
{
    $query = DB::table('macs');
    if ($request->loin == 'AA/A') {
    $query->whereIn('sap_code',['108591','108592'])->avg('mac');
    }

    if ($request->loin == 'B') {
        $query->where('sap_code','108593')->avg('mac');
    }

    $mac = $query->get('mac');

    Pt::where('id',$pt->id)->update([
        'lbs' => $request->lbs,
        'loin' => $request->loin,
        'mac' => $mac
    ]);
}

谢谢你

标签: laravelaverage

解决方案


当您使用avg-method时,它将直接返回该值。

if ($request->loin == 'AA/A') {
   $mac = DB::table('macs')->whereIn('sap_code',['108591','108592'])->avg('mac');
} else {
   $mac = DB::table('macs')->where('sap_code','108593')->avg('mac');
}

您可以使用when代替if

$mac = DB::table('macs')
    ->when(($request->loin == 'AA/A'), function ($query) {
        return $query->whereIn('sap_code',['108591','108592']);
    })
    ->when(($request->loin == 'B'), function ($query) {
        return $query->where('sap_code', '108593');
    })
    ->avg('mac');

推荐阅读