с помощью if найти avg в laravel - PullRequest
0 голосов
/ 12 марта 2020

Я хочу показать количество, используя, если, но не работает,

это мой код,

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

спасибо

1 Ответ

0 голосов
/ 12 марта 2020

Когда вы используете avg-метод , он будет возвращать значение напрямую.

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

И вы можете использовать , когда вместо 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');
...