html将null显示为空,mysql – 以html格式将空字符串更新为NULL

我正在Laravel建立一个网站.

我在InnoDB表中设置了外键约束.

我的问题是,如果我没有在选择框中选择一个值,框架会尝试使用”(空字符串)插入或更新表中的记录.这导致MySQL错误,因为它无法在子表中找到等效的外键值.

是否有一些优雅的方法来强制在外键字段中插入NULL,而不是检查每个字段?或者强制MySQL接受”作为“null”外键引用?

换句话说:我有一个SELECT字段,第一个OPTION为空.我选择了空白的OPTION.当我提交时,传递一个空字符串”.在MySQL中显然我可以做UPDATE表SET foreignKey = NULL而不是UPDATE表SET foreignKey =”.它不会“转换”为NULL.我可以逐个检查字段,但是为每个外键将”转换为NULL,也许在数组中指定它们,我想知道是否有更简化的方法来执行此操作.

也许我必须在我的数据库架构中更改我的ON UPDATE操作(未设置)?

编辑:列DO接受NULL值,问题在于框架或MySQL如何处理来自HTML的“空值”.我不是建议MySQL“做错了”,它也是合乎逻辑的,问题是你不能在HTML中设置“NULL”值,我想知道是否有一种优雅的方法来管理这个问题. MySQL或Laravel.

换句话说,我是否必须手动指定外键并相应地构造我的查询,还是有另一种强大而优雅的方式?

到目前为止我的模型MyModel的代码:

$obj = new MyModel;

$obj->fill(Input::all())); // can be all() or a subset of the request fields

$obj->save();

解决方法:

而不是使用

$obj = new MyModel;

$obj->fill(Input::all())); // can be all() or a subset of the request fields

$obj->save();

使用

$obj = new MyModel;

$obj->fieldName1 = Input::get('formField1');

$obj->fieldName2 = Input::has('formField2') && Input::get('formField2') == 'someValue' ? Input::get('formField2') : null;

// ...

$obj->save();

并确保您的数据库字段接受空值.此外,您可以从数据库/ phpmyadmin将默认值设置为null.

标签:laravel,mysql

来源: https://codeday.me/bug/20190725/1532874.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值