thinkphp3.1.3多对多关联模型BUG修复


修复了在 MANY_TO_MANY下 会清空 中间表的BUG


需要修改文件


ThinPHP/Extend/Model下面的RelationModel.class.php,


192行把:


 $sql ="SELECT b.{$mappingFields} FROM {$mappingRelationTable} AS a,".$model->getTableName()." AS b WHERE a.{$mappingRelationFk} =b.{$model->getPk()} AND a.{$mappingCondition}";


替换成:


 $sql ="SELECT b.{$mappingFields} FROM".C('DB_PREFIX')."{$mappingRelationTable} AS a,".$model->getTableName()." AS b WHERE a.{$mappingRelationFk} =b.{$model->getPk()} AND a.{$mappingCondition}";


 


345行把:


 // 删除关联表数据
  $this->table($mappingRelationTable)->where($mappingCondition)->delete();
  //
插入关联表数据
  $sql = 'INSERT INTO '.$mappingRelationTable.'('.$mappingFk.','.$mappingRelationFk.') SELECTa.'.$this->getPk().',b.'.$model->getPk().' FROM'.$this->getTableName().' AS a ,'.$model->getTableName()." AS bwhere a.".$this->getPk().' ='. $pk.' AND  b.'.$model->getPk().' IN('.$relationId.") ";


替换成:


$thisModel = M($mappingRelationTable);
$thisModel->where($mappingCondition)->delete();
$map = C('DB_PREFIX').$mappingRelationTable;
$sql = 'INSERT INTO '.$map.' ('.$mappingFk.','.$mappingRelationFk.') SELECTa.'.$this->getPk().',b.'.$model->getPk().' FROM'.$this->getTableName().' AS a ,'.$model->getTableName()." AS bwhere a.".$this->getPk().' ='. $pk.' AND b.'.$model->getPk().' IN('.$relationId.") ";


  


367行把:


 $result =  $this->table($mappingRelationTable)->where($mappingCondition)->delete();


替换成:


 $thisModel =M($mappingRelationTable);
 $result=$thisModel->where($mappingCondition)->delete();


这样就行了.


 


在关联模型中 relation_table中间表时不用带表前缀了.


这里附上修改好的完整有RelationModel.class.php

一铭小站原创文章所属权归 www.shayiming.cn所有转载请注明出处: http://www.shayiming.cn/12-31-317.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值