首页 文章

Yii2 Build 了许多关系

提问于
浏览
0

Yii2 build relation many to many

我有2个表用户和朋友
tables

代码查询

$friends = Friends::find()
            ->select(['friends.user_id', 'users.name'])
            ->leftJoin('users','users.id = friends.friend_user')
            ->with('users')
            ->all();

在结果错误

无效参数 - yii \ base \ InvalidParamException . app \ models \ Friends没有名为“users”的关系 .

1 回答

  • 2

    Friends 有一个名为 user_id 的列,因此只属于一个用户 . 如果您自动生成了 Friends ActiveRecord,它可能有一个函数 getUser (单数,因为它只有一个),它看起来像这样:

    public function getUser() {
        return $this->hasOne(User::className(), ['id' => 'user_id']);
    }
    

    所以你得到错误是因为没有 getUsers 函数存在(返回一个有效的ActiveQuery对象) . 因为每个朋友只能有一个用户我认为你应该使用单数版本 . 如果仍然提供相同的错误,您应该实现上面的函数,并可能更改它以匹配您的类名 .

    当您使用 with(['relation']) 加载关系时,Yii会将该条目转换为 getRelation 并在模型上调用该函数以获取加载关系所需的查询 .

相关问题