我正在Laravel建立一个网站.我在InnoDB表中设置了外键约束.我的问题是,如果我没有在选择框中选择一个值,框架会尝试使用”(空字符串)插入或更新表中的记录.这导致MySQL错误,因为它无法在子表中找到等效的外键值.是...
我正在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.
本文标题为:mysql – 以html格式将空字符串更新为NULL
基础教程推荐
- bootstrap select2 动态从后台Ajax动态获取数据的代码 2023-02-23
- 使用Ajax方法实现Form表单的提交及注意事项 2023-02-14
- echarts几个公司内部数据可视化图表必收藏 2022-08-31
- 从功能点计算PHP,MySQL,HTML Web应用程序的代码行估计 2023-10-25
- linux – 在电子邮件正文中发送html文件的输出 2023-10-25
- vue Pc端微信支付和支付宝支付 2023-10-08
- 基于Ajax技术实现考试倒计时并自动提交试卷 2023-01-20
- HTML 表单到 ExtJS 表单 2022-09-15
- Vuex的插件保持状态持久化 2023-10-08
- JS中的async与await怎么使用 2023-08-08
