我试图让我的模型的行与两个关系的条件。 所以,我有一个模型$ model和两个关系:
$ model与$ relation1和$有一个MANY_MANY关系 $ relation1与$ relations2有一个MANY_MANY关系。
我想获得$ model,其中$ relations2为'1'。
所以我试过了:
$model->with('relation1.relations2'=>array('alias'=>'v'))->findAll('v.id=1');
这很有效。
但是当我尝试向findAll添加限制和偏移时:
$model->with('relation1.relations2'=>array('alias'=>'v'))->findAll('condition'=>'v.id=1', 'offset'=>0, 'limit'=>10);
它说它无法找到v别名(因为他试图通过两个查询来解决这个问题,否则由于MANY_MANY关系而无法应用限制)。
所以,实际上我看到了问题...但我该如何解决呢?
答案 0 :(得分:0)
试试这个
$model->with('relation1'=>array('with'=>'relations2','alias'=>'v'))->findAll(array('condition'=>'v.id=1', 'offset'=>0, 'limit'=>10));
答案 1 :(得分:0)
您需要together
property of CDbCriteria
$model->with(array('relation1.relations2'=>array('alias'=>'v')))->findAll('condition'=>'v.id=1', 'offset'=>0, 'limit'=>10,
'together'=>true);
您已经提到了原因,即两个查询正在形成,而您需要一个限制,这可以通过together
来完成。