Когда метод «когда» только один, код может работать нормально. Но когда я использую непрерывный, как показано ниже, я получаю сообщение об ошибке
Call to a member function when() on integer
Я не могу понять, в чем ошибка? Любая помощь приветствуется!
$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(); в конце.
$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();
Поскольку метод update возвращает целое число, я предполагаю, что значение вашего $query обновляется и больше не является экземпляром Query\Builder.
Какая строка вызывает ошибку?