0

2つの関係を超える条件でモデルの行を取得しようとしています。したがって、モデル$modelと2つのリレーションがあります。

$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エイリアスが見つからないことを示しています(2つのクエリでそれを解決しようとしているため、そうでない場合は、MANY_MANY関係のために制限を適用できません)。

それで、実際に私は問題を見ます...しかし、どうすればそれを解決できますか?

4

2 に答える 2

0

CDbCriteriaのプロパティが必要ですtogether

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

理由についてはすでに説明しました。これは、2つのクエリが形成されているのに対し、制限用に1つ必要であり、これは。によって実行できます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 に答える