0

我正在尝试获取具有两个关系条件的模型行。所以,我有一个模型 $model 和两个关系:

$model 与 $relation1 有 MANY_MANY 关系,$relation1 与 $relations2 有 MANY_MANY 关系。

我试图在 $relations2 为 '1' 的地方获取 $model。

所以我尝试了:

$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 关系而无法应用限制)。

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

4

2 回答 2

0

您需要togetherCDbCriteria 的属性

$model->with(array('relation1.relations2'=>array('alias'=>'v')))->findAll('condition'=>'v.id=1', 'offset'=>0, 'limit'=>10,
'together'=>true);

您已经提到了原因,即形成了两个查询,而您需要一个用于限制,这可以通过together.

于 2012-05-15T17:32:42.893 回答
0

尝试这个

$model->with('relation1'=>array('with'=>'relations2','alias'=>'v'))->findAll(array('condition'=>'v.id=1', 'offset'=>0, 'limit'=>10));
于 2012-05-15T06:18:26.063 回答