2016-05-24 10 views
1

ユーザーがジョイントしていないすべてのグループを別のテーブルから取得したいと考えています。私のテーブルはuser、user_to_usergroup、usergroupです。Yii2ジャンクション関係

クエリとは逆の結果を得る方法はありますか?

コードは次のとおりです。

public function getGroupsNotJoint() {  
return $this- >hasMany(Usergroup::className(), 
['id' => 'group_id'])->viaTable('user_to_usergroup', ['user_id' => 'id']); 
} 

このコードは、ユーザーが、私はちょうど、ユーザーが属していないグループを望む、所属するすべてのグループを返します。

答えて

1

名前既存の(追加条件を適用する)関係getGroups()、あなたがこの関係を変更することによって、現在のユーザーのグループの残りの部分を取得することができます:

public function getOtherGroups() 
{ 
    return $this->getGroups()->andWhere(['!=', 'user_id', \Yii::$app->user->id]); 
} 
+0

問題であり、そのテーブルのuser_to_usergroupに私はジョイントグループを持っている場合は同じgroup_idであるがuser_idが異なる別の行が存在する場合、この行は「OtherGroup」となり、このグループは結合されていません。 私はジョイントしていないすべてのグループを取る、すべての行ではない私のIDを持っていない... –

関連する問題