gpt4 book ai didi

mysql - Yii2 查询群组中的用户

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:21 26 4
gpt4 key购买 nike

我有一个 DB,它有一个 user 表和一个 group 表,group 表有一个列 user_id,这使得它很简单返回组中的用户列表:

$users = User::find()
->where(['{{user}}.group_id' => $group_id])
->all();

现在 user_id 列消失了,存在第三个表 group_user,其中包含用于关系的 user_idgroup_id 列。

我试过这个:

$users = User::find()
->innerJoinWith('group_user)
->where(['{{group_user}}.group_id' => $group_id])

但收到此错误:

User has no relation named "group_user"

但是我在User模型中设置了关系:

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

我错过了什么?这用于 Humhub API .

最佳答案

我将使用 viaTable 重新编程您的 getGroupUser(将其重命名为 getGroups)关系:

public function getGroups() {
return $this->hasMany(Group::className(), ['user_group.id_group' => 'group.id'])
->viaTable('user_group', ['user.id' => 'user_group.id_user']);
}

这将为您提供用户所属的组。但我认为你的目标是获得属于给定组的用户,所以类似地我会在你的 Group 模型中创建一个 getUsers 关系:

public function getUsers() { 
return $this->hasMany(User::className(), ['id' => 'user_id'])
->viaTable('group_user', ['group_id' => 'id']);

然后:

$group = Group::findOne($id_group);
$users = $group->getUsers()->all();

关于mysql - Yii2 查询群组中的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43234854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com