使用 if 在 laravel 中查找平均值

using if to find avg in laravel

我想使用 if 显示计数平均值,但不起作用,

这是我的代码,

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

谢谢

当你使用avg-method时,它会直接return这个值。

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