Yii2 build relation many to many
我有2个表用户和朋友
代码查询
$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 回答
Friends
有一个名为user_id
的列,因此只属于一个用户 . 如果您自动生成了Friends
ActiveRecord,它可能有一个函数getUser
(单数,因为它只有一个),它看起来像这样:所以你得到错误是因为没有
getUsers
函数存在(返回一个有效的ActiveQuery对象) . 因为每个朋友只能有一个用户我认为你应该使用单数版本 . 如果仍然提供相同的错误,您应该实现上面的函数,并可能更改它以匹配您的类名 .当您使用
with(['relation'])
加载关系时,Yii会将该条目转换为getRelation
并在模型上调用该函数以获取加载关系所需的查询 .