Php Laravel雄辩更新tinyint(布尔值)
我在更新雄辩的模型时遇到了一个奇怪的问题,我使用了一个复选框(1 | |未定义),并使用Php Laravel雄辩更新tinyint(布尔值),php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我在更新雄辩的模型时遇到了一个奇怪的问题,我使用了一个复选框(1 | |未定义),并使用 $input = $request->all(); $service->update($input); 我特意勾选了复选框 $input['active'] = ($request->has('active') && $input['active']) ? 1 : 0 但它仍然不会影响数据库 当我转储请求时我可以看到处于活动状态:1或0,但这一切都不会改变update(
$input = $request->all();
$service->update($input);
我特意勾选了复选框
$input['active'] = ($request->has('active') && $input['active']) ? 1 : 0
但它仍然不会影响数据库
当我转储请求时
我可以看到处于活动状态:
1
或0
,但这一切都不会改变update()上的数据库
我做了一个快速测试,并使用
$service->active = ($request->has('active') && $input['active']) ? 1 : 0 ;
$service->save();
完成了任务。但是为什么update()
没有更新此字段?您是否尝试过:
$input = $input->except(['active']);
$input['active'] = ($request->has('active') && $input['active']) ? 1 : 0;
$service->update($input);
希望这有帮助。如果$request->active
返回true,但仍无法保存在DB中,我打赌您忘记将active
添加到$filleble
数组:
protected $fillable = ['something', 'something_else', 'active'];
只需$input['active']=$request->has('active')如何?1:0
当您dd($request->input('active'))
时,它是否返回true
?另外,当您尝试此操作时,是否会出现错误,或者它是否工作,只是不更新该字段?就是这样。。我想我把它们都加上了。谢谢!为我工作,但你能解释为什么吗happen@VinayKaithwas您无法轻松与$fillable数组中不存在的列进行交互。它也可以工作,但在处理Laravel中的布尔值时,它更倾向于使用true
和false
(而不是1和0)