Yii两个MANY_MANY关系有限制

时间:2012-05-15 05:18:11

标签: php yii

我试图让我的模型的行与两个关系的条件。 所以,我有一个模型$ 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关系而无法应用限制)。

所以,实际上我看到了问题...但我该如何解决呢?

2 个答案:

答案 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来完成。