【问题标题】:Laravel checkbox save and updateLaravel 复选框保存和更新
【发布时间】:2017-04-11 13:44:22
【问题描述】:

在 Laravel 中保存和更新复选框的最佳做法是什么?

我已设置布尔数据类型,迁移文件中的默认值为 0,如果我尝试保存复选框,则会收到此错误:

Incorrect integer value: 'on' for column

还有更新方法呢……

这是我在视图文件中的复选框:

{!! Form::checkbox('clothing_supplied', null, isset($event) ? $event->clothing_supplied : 0, ['id' => 'check', 'class' => 'form-control' ]) !!}

这就是我更新的方式

$event->update($request->all());

【问题讨论】:

  • 你能分享checkbox的代码吗?

标签: laravel


【解决方案1】:

试试这个

$request->replace(array('clothing_supplied' => (bool)$request->input('clothing_supplied')));

$event->update($request->all());

仅根据某个值编辑单个字段

(bool)($request->input('clothing_supplied') == 'on') ? $event->update(['clothing_supplied' => 1]) : $event->update(['clothing_supplied' => 0]);

【讨论】:

  • 我可以只更新一个字段而不是 $request->all()...例如 $event->update(onlyclothing_supplied);
  • 是的,尝试使用$event->update(['clothing_supplied'=>$request->input('clothing_supplied')])
  • 那么这将是最好的解决方案$event->update(['clothing_supplied' => 1]);
  • 在这里您将值设置为1。你不打算从表单输入中设置值吗?
  • 我会这样做:$request->has('clothing_supplied') ? $event->update(['clothing_supplied' => 1]) : $event->update(['clothing_supplied' => 0]); 那不是很好吗?
【解决方案2】:

这应该可以解决问题:

$event->clothing_supplied = ($request->get('clothing_supplied') === 'on');

这应该添加到您的控制器操作或您要更新模型的任何位置。

这是因为表单提交的实际值是字符串on,而不是布尔值。

或者:

$all = $request->all();
$all['clothing_supplied'] = ($request->get('clothing_supplied') === 'on');
$event->update($all);

【讨论】:

  • 我得到同样的错误...它应该保存为 0 或 1
  • 尝试将其转换为布尔值。我已经更新了我的答案。
  • 也许这应该可行 $model->clothing_supplied = ($request->get('parameter') === 1);
  • 顺便说一句,您必须使用 parameter 而不是 clothing_supplied
  • 这个 $event->update(clothing_supplied) 的等效命令是什么;
猜你喜欢
  • 2021-01-10
  • 2018-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多