在laravel更新查询生成器上对整数的成员函数when()进行调用

时间:2018-10-24 04:46:14

标签: php laravel eloquent query-builder

当“ when”方法只有一种时,代码可以正常工作。 但是当我像下面这样使用continuous时,我收到了错误消息

  

在整数上的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]);
    });

或者我该如何使用雄辩的方法来雄辩这种方法?

2 个答案:

答案 0 :(得分:2)

尝试在末尾添加->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();

答案 1 :(得分:0)

由于update方法返回一个整数,我想您的$query的值将得到更新,并且不再是Query\Builder实例。