您好我需要创建一个具有更复杂关系的CDbCriteria查询。
Table1与表2有HAS_ONE的关系 - 我们称之为Relation1
表2与表3有HAS_ONE的关系 - 我们称之为Relation2
Table3有我想要的Field让我们称之为Field2
$ this指的是Table1的类,我定义了
class Table1 extends ActiveRecord {
public $Field1; // so I can do a search on it
...
public function mySearch()
{
$criteria = new CDbCriteria;
//I need to do sth like this:
$criteria->compare('Relation1.Relation2.Field2',$this->Field1);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
}
但是我得到了一个错误,
未找到列:1054'where子句'中的未知列'Relation1.Relation2.Field2'
任何想法如何解决?我不想写自己的联接,我想以ORM的方式来做。
答案 0 :(得分:1)
使用此:
class Table1 extends ActiveRecord {
public $Field1;
public function mySearch()
{
$criteria = new CDbCriteria;
$criteria->with = array(
'relation_to_table2',
'relation_to_table2.relation_to_table3'
);
$criteria->compare('relation_to_table3.Field2',$this->Field1);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
}