我试图提出一个条件,即客户端ID必须与客户端ID匹配,且locations表中的region域必须与附加到与用户位置关联的位置ID的区域匹配。
所以我有3张桌子。当前表(t1),表关系1指的是(t2),t2指的是关系2(我们称之为t3)。
$this->getDbCriteria()->mergeWith(array( 'with' => $rel, 'condition'=>'relation1.client_id=:client_id AND relation1.relation2.region=:region', 'params'=>array(':client_id'=>$client_id, ':region'=>$region), )); return $this;
Relation1是从该表中删除后的表中的关系。 relation1引用的表有一个名为relation2的关系,它将我带到需要检索区域值的位置。
如果我删除它的第二个条件和参数,那么我知道relation1正在工作,而relation2也适用于其他上下文。他们在这里是否愿意看到他们。
public function relations() { return array( 'relation1' => array(self::BELONGS_TO, 't2', 't2_id'), ); }
和
public function relations() { return array( 'relation2' => array(self::BELONGS_TO, 't3', 't3_id'), ); }
我觉得这应该有用。有什么帮助吗?
答案 0 :(得分:3)
我从另一个网站得到了答案。如果您有兴趣,解决方案是:
$this->getDbCriteria()->mergeWith(array( 'with' => array( 'relation1' => array( 'condition' => 'relation1.column = :column_id', 'params' => array(':column_id'=>$column_id)), 'relation1.relation2' => array( 'condition' => 'relation2.column2 = :column2', 'params' => array(':column2'=>$column2)) ), )); return $this;
感谢您的帮助!