我有两个表:users
主键id
,friends
外键user1
和user2
都与用户的{{1}相关}。
在用户模型中我有
id
public function getFriends() {
return $this->hasMany(Friends::className(), ['user1' => 'id'])->inverseOf('user');
}
只找到那些朋友,其中user1匹配给定用户的ID。
如何更改User::find()->with('friends')->all()
以查找与用户ID匹配的user1 或user2 的朋友?
答案 0 :(得分:0)
考虑添加双向关系
编辑:以下#1解决方案无效,尽管yii dev建议
根据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