> php教程 > php手册 > 3.2.2模型关联condition条件使用变量方法

3.2.2模型关联condition条件使用变量方法

WBOY
풀어 주다: 2016-06-07 11:40:44
원래의
1634명이 탐색했습니다.

先前使用关联模型的时候出现增加没有问题,但是 删除和修改 的时候出现了不同步的原因。

大家可以加QQ群 161607701 ,大家共同学习PHP技术!

说明:
$_link 内如果设置了条件的话就会出现以上问题。
我是只配置了 一对一 其他我没有测试哦。因为我只用到了一对一表。
解决办法如下
打开:TP/Library/Think/Model/RelationModel.class.php 文件
查找 一下代码:                        if(!empty($val['condition'])) {<br>                             $mappingCondition   =   $val['condition'];<br>                         }else{<br>                             $mappingCondition               =   array();<br>                             $mappingCondition[$mappingFk]   =   $pk;<br>                         }修改为:                        $mappingCondition               =   array();<br>                         if(!empty($val['condition'])) {<br>                             if(!empty($val['is_key'])){<br>                                 $mappingCondition   =   $this->get_condition($val['condition']);<br>                             }else{<br>                                 $mappingCondition = $this->get_condition($val['condition']);<br>                                 $mappingCondition[$mappingFk] =  $pk;<br>                             }<br>                         }else{<br>                             $mappingCondition[$mappingFk]   =   $pk;<br>                         }在最后加入一个方法    /**<br>      * @param $condition 条件<br>      * @return array<br>      */<br>     protected function get_condition($condition){<br>         $wherearr =  explode('and',$condition);<br>         $mappingCondition = array();<br>         foreach($wherearr as $value){<br>             $value  =   trim($value);<br>             list($key,$v) = explode('=',$value);<br>             $key = trim($key);<br>             $v =  str_replace('"','',str_replace('\'','',trim($v)));<br>             $mappingCondition[$key] =  $v;<br>         }<br>         return $mappingCondition;<br>     }由于增加了一个参数 is_key
需要 配置一下。
'is_key' => false在配置关联表的时候 condition 会自动带着 主表ID 作为条件。
'is_key' => true, 和 thinkPhp 默认的一样了,就会是你 配置的 condition 参数内作为条件。 //数据关联<br>     protected $_link=array(<br>         'Keyword'=>array(<br>             'mapping_type'    => self::HAS_ONE,<br>             'class_name'    =>'Common/Keyword',<br>             'foreign_key'   => 'mod_id',<br>             'is_key' => false,<br>             'mapping_fields'=> 'keyword,mod_name,match_type',<br>             'condition' => 'mod_name = "TextReply"',<br>             'as_fields' => 'keyword,mod_name,match_type',<br>         )<br>     );

AD:真正免费,域名+虚机+企业邮箱=0元

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿