How to get users of a specefic role in Yii2 and DbManager? How to get users of a specefic role in Yii2 and DbManager? php php

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.