【问题标题】:Yii two MANY_MANY relations with limitYii 两个 MANY_MANY 关系与限制
【发布时间】:2012-05-15 05:18:10
【问题描述】:

我正在尝试获取具有两个关系条件的模型行。 所以,我有一个模型 $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 关系而无法应用限制)。

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

【问题讨论】:

  • 日志中是否有 SQL 字符串?请出示一下

标签: php yii


【解决方案1】:

试试这个

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

【讨论】:

    【解决方案2】:

    你需要together property of CDbCriteria

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      相关资源
      最近更新 更多