2017-01-19 4 views
0

私は2つのテーブルを持っています。とhasManyの「または」状態

ユーザーモデルでは、私は

public function getFriends() { 
    return $this->hasMany(Friends::className(), ['user1' => 'id'])->inverseOf('user'); 
} 

User::find()->with('friends')->all()を持っているがUSER1の試合は、ユーザーのIDを与えられた唯一の友人たちを、見つけます。

getFriends()を変更してuser1の友人を探すまたはuser2とユーザーのIDは一致していますか?

答えて

0

はEDIT双方向の関係を追加することを検討して:YiiのDEVがあり、それを助言にもかかわらず、#1ソリューションが動作していない、次の


http://github.com/yiisoft/yii2/issues/851によると、これは動作するはず

public function getFriends() { 
    return $this->hasMany(Friends::className(), ['user1' => 'id']) 
     ->viaTable('friends', array('user2' => 'id'), function ($q) { 
      $q->where('user1=user2'); 
    }); 
} 

編集:

あなたがまだソートしていない場合は、このリンクをチェックしてください。yii relation for multiple column foreign keys

+0

'SELECT * FROM friends WHERE(user1 = user2)AND(user2 = 123)'と ' SELECT * FROM friends WHERE 0 = 1'(123はユーザーのIDです) – Alexey

+0

ああ、私には少し変わったようでしたが、解決策はまだ見つかりましたか? – Ripper

関連する問題