Как получить пользователей с определенной ролью в Yii2 и DBManager?
Как получить пользователей с определенной ролью в Yii2 и DBManager в RBAC?
Пожалуйста, представьте некоторые API для управления пользователями и ролями.
Я искал и читал Руководство по Yii2, но не нашел никакого решения.
11
3 answers
Я написал эту функцию, которую можно добавить в пользовательский класс.
/**
* Finds all users by assignment role
*
* @param \yii\rbac\Role $role
* @return static|null
*/
public static function findByRole($role)
{
return static::find()
->join('LEFT JOIN','auth_assignment','auth_assignment.user_id = id')
->where(['auth_assignment.item_name' => $role->name])
->all();
}
5
Author: Paul van Schayck, 2014-12-13 15:05:20
Начиная с версии 2.0.7 Yii, DbManager
и ManagerInterface
, которые он реализует, имеют getUserIdsByRole($roleName)
который делает то, что вы хотите, без пользовательского кода.
5
Author: mmonem, 2018-01-15 16:20:43
Я использовал руководство @Manquer и написал эту функцию:
public static function getRoleUsers($role_name)
{
$connection = \Yii::$app->db;
$connection->open();
$command = $connection->createCommand(
"SELECT * FROM auth_assignment INNER JOIN user ON auth_assignment.user_id = user.id " .
"WHERE auth_assignment.item_name = '" . $role_name . "';");
$users = $command->queryAll();
$connection->close();
return $users;
}
Может быть, кому-то пригодится.
4
Author: b24, 2014-08-22 05:57:04