thinkphp5.0.2 多对多模型中插入中间表字段不存在的解决办法

最近我用thinkphp5.0.2写一个项目的时候,在使用框架中多对多模型进行对中间表额外属性插入的时候,发生了数据表字段不存在的错误,如下图
thinkphp5.0.2 多对多模型中插入中间表字段不存在的解决办法_第1张图片
我中间表sxt_order_product的字段信息为
thinkphp5.0.2 多对多模型中插入中间表字段不存在的解决办法_第2张图片

我通过对框架运行追踪调试中发现,在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');即可解决。

你可能感兴趣的:(框架)