thinkphp5.0.2 多对多模型中插入中间表字段不存在的解决办法
2016-12-30 09:27
232 查看
最近我用thinkphp5.0.2写一个项目的时候,在使用框架中多对多模型进行对中间表额外属性插入的时候,发生了数据表字段不存在的错误,如下图
我中间表sxt_order_product的字段信息为
我通过对框架运行追踪调试
4000
中发现,在
追究其原因在于:
我中间表sxt_order_product的字段信息为
我通过对框架运行追踪调试
4000
中发现,在
thinkphp/library/think/model/Relation.php第625行return
$query->table($this->middle)->insert($pivot);中,$query 穿入table参数后,该对象获取的表的信息依旧是以前那个表的信息,并没有因为传入table而改变。
追究其原因在于:
thinkphp/library/think/db/Query.php第1430行
return !empty($this->fieldType) ? $this->fieldType : $this->getTableInfo($options['table'], 'type');中这个三元运算符的原因。改为
return $this->getTableInfo($options['table'], 'type');即可解决。
相关文章推荐
- ThinkPHP增加数据库字段后插入数据为空的解决办法
- thinkphp模型$_auto自动完成设置为插入时更新操作也变化的解决办法
- django模型修改后更新报错表不存在的的解决办法
- 向ACCESS中的"时间/日期"字段中插入DateTime.Now时出现“标准表达式中数据类型不匹配。”错误的解决办法
- Thinkphp 使用过程中,模型中使用其它表却总是没起作用的解决办法
- 51nod 1065 最小正字段和 解决办法:set存前缀和,二分插入和二分查找
- Thinkphp3.23 关联模型relation方法不存在解决方法
- 关于MYSQL进行insert操作时,存在则更新不存在则插入的解决办法
- jsp向mysql数据库插入中文字段 乱码以及中文空白的解决办法
- thinkphp 上传文件时目录不存在的解决办法
- phalcon model在插入或更新时会自动验证非空字段的解决办法
- CMS(新闻发布系统)存放新闻表内容的字段是text,数据过多无法插入,解决办法!
- 存储过程提示临时表字段不存在的解决办法--直接修改临时表的名称,用唯一值作为名称
- 向ACCESS中的"时间/日期"字段中插入DateTime.Now时出现“标准表达式中数据类型不匹配。”错误的解决办法
- db2修改表字段后插入数据报《-668》错误解决办法
- java.util.Date()插入MySQL数据库datetime字段出错的解决办法
- 批量插入Oracle,遇到CLob字段慢的解决办法
- mysql字段类型为int默认null,插入却显示0的解决办法,参考php代码
- thinkphp中的模型替换很容易混淆,解决办法如下
- mysql中设置字段默认为空,插入数据时会提示doesn't have a default value的解决办法