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

join句を変更してみてください。

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