2012-05-15 92 views
0

我想通過兩個關係的條件獲取我的模型的行。 因此,我有一個模型$模型和兩個關係:Yii與限制的兩個MANY_MANY關係

$ 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

你有日誌SQL字符串嗎?請展示它 – Sergey

回答

0

試試這個

$model->with('relation1'=>array('with'=>'relations2','alias'=>'v'))->findAll(array('condition'=>'v.id=1', 'offset'=>0, 'limit'=>10)); 
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完成。