这是我的标准:
$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表中的其他字段在技术上使它们'UNIQUE'。
我希望结果基于URL字段 UNIQUE ,而不是userUrls
字段。
答案 0 :(得分:2)
添加$criteria->group = 't.id';
修复了所有问题。这是有道理的。
答案 1 :(得分:1)
尝试更改join子句。
$criteria->join = 'LEFT JOIN';