Вызов функции-члена когда () для целого числа в построителе запросов на обновление laravel - PullRequest
0 голосов
/ 24 октября 2018

Когда метод 'when' только один, код может работать нормально.Но когда я использую непрерывный, как показано ниже, я получаю сообщение об ошибке

Вызов функции-члена, когда () на целое число

Я не могу понять, в чем ошибка?Любая помощь приветствуется!

$variable=1;

    DB::table('products')
    ->where('id',$p_id)
    ->when($status_0_prop=='true', function($query) use ($variable){

            return $query->update(['status'=>$variable]);
    })
    ->when($queue_number_1_prop=='true', function($query) use ($variable){

            return $query->update(['queue_confirm_1'=>$variable]);
    })
    ->when($queue_number_2_prop=='true', function($query) use ($variable){

            return $query->update(['queue_confirm_2'=>$variable]);
    })
    ->when($queue_number_3_prop=='true', function($query) use ($variable){

            return $query->update(['queue_confirm_3'=>$variable]);
    })
    ->when($img_buy_prop=='true', function($query) use ($variable){

            return $query->update(['img_buy'=>$variable]);
    });

или как я могу использовать Eloquent для красноречивого метода?

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Поскольку метод update возвращает целое число, я полагаю, что ваше значение $query обновляется и больше не является экземпляром Query\Builder.

0 голосов
/ 24 октября 2018

Попробуйте добавить ->get(); в конце.

$variable=1;

DB::table('products')
->where('id',$p_id)
->when($status_0_prop=='true', function($query) use ($variable){

        return $query->update(['status'=>$variable]);
})
->when($queue_number_1_prop=='true', function($query) use ($variable){

        return $query->update(['queue_confirm_1'=>$variable]);
})
->when($queue_number_2_prop=='true', function($query) use ($variable){

        return $query->update(['queue_confirm_2'=>$variable]);
})
->when($queue_number_3_prop=='true', function($query) use ($variable){

        return $query->update(['queue_confirm_3'=>$variable]);
})
->when($img_buy_prop=='true', function($query) use ($variable){

        return $query->update(['img_buy'=>$variable]);
})->get();
...