Laravel雄辩地更新tinyint(布尔)

时间:2016-10-24 07:05:23

标签: php laravel laravel-5 eloquent laravel-5.3

我在更新雄辩模型时有一个奇怪的问题,我使用复选框(1 || undefined)并使用

验证补丁后的所有数据
    $input = $request->all();
    $service->update($input);

我试图专门检查复选框

    $input['active'] = ($request->has('active') && $input['active']) ? 1 : 0

但它仍然不会影响数据库。

当我转储Request时,我可以看到active: 10,但没有任何改变update()上的数据库

我做了一个快速测试并使用

    $service->active = ($request->has('active') && $input['active']) ? 1 : 0 ;
    $service->save();

完成了这项工作。但为什么update()没有更新此字段?

2 个答案:

答案 0 :(得分:11)

如果$request->active返回true,但仍未保存在数据库中,我打赌您忘记将active添加到$fillable数组中:

protected $fillable = ['something', 'something_else', 'active'];

https://laravel.com/docs/5.3/eloquent#mass-assignment

答案 1 :(得分:0)

你试过了吗?

$input = $input->except(['active']);

$input['active'] = ($request->has('active') && $input['active']) ? 1 : 0;

$service->update($input);

希望这有帮助。