How to get users of a specefic role in Yii2 and DbManager?
Since Yii version 2.0.7, DbManager
and ManagerInterface
which it implements have getUserIdsByRole($roleName)
which does what you want without custom code.
I wrote this function which can be added to an User class.
/** * 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();}
I used @Manquer guide and wrote this function:
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; }
Maybe useful for someone.