1

这是我的标准:

$criteria = new CDbCriteria();
$criteria->with = array('userUrls');
$criteria->together = true;
$criteria->compare('userUrls.community_id',Yii::app()->params['currentCommunity']->id);
$criteria->order = 't.weight DESC, t.id DESC';
$urls = Url::model()->findAll($criteria);

我基本上是在尝试JOIN通过MANY_MANY. 除了在JOIN表中我需要一个附加条件(community_id 与给定条件匹配)。

没有$criteria->together = true;它在 WHERE 语句中失败。

如果我添加$criteria->distinct = true;它仍然会给我重复,因为 JOIN 表中的其他字段在技术上使它们成为“唯一”。

我希望结果基于 URL 字段而不是字段是唯一userUrls的。

4

2 回答 2

2

添加$criteria->group = 't.id';解决了这一切。这是有道理的。

于 2012-11-18T13:58:28.433 回答
1

尝试更改联接子句。

$criteria->join = 'LEFT JOIN';
于 2012-11-15T18:04:50.453 回答