hasMany有'或'条件

时间:2017-01-19 02:49:33

标签: activerecord yii2

我有两个表:users主键idfriends外键user1user2都与用户的{{1}相关}。

在用户模型中我有

id

public function getFriends() { return $this->hasMany(Friends::className(), ['user1' => 'id'])->inverseOf('user'); } 只找到那些朋友,其中user1匹配给定用户的ID。

如何更改User::find()->with('friends')->all()以查找与用户ID匹配的user1 或user2 的朋友?

1 个答案:

答案 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