多对多关联插入SQL语句错误

浏览:963 发布日期:2015/08/19
3.2.3 - 严重 - 未处理
ThinkPHP/Library/Think/Model/RelationModel.class.php 的opRelation方法(line348),SQL语句最后拼接的部分relationId变量的计算方法似乎不正确。line339在循环从多对多数组中获取关联的外键时,使用的是 $mappingKey,line264,如果没有配置 mapping_key 选项,则使用当前模型的主键。举例:A与B模型为多对多,插入A时,级联插入A与B的关联关系,按上述代码逻辑,则在A数据模型中设置与B的关联数据时,需要用A的主键名指向B的主键值,这逻辑与级联查询时不一致。

建议:line340改为 $ids[] = $vo[$model->getPk()]; 因为在获取关联的模型主键值时,应该使用关联模型的主键字段名称。

如果是我使用上的问题,希望能给出多对多级联插入的示例配置及代码片段,目前在线文档对于多对多的插入没有介绍。
评论(
后面还有条评论,点击查看>>