Получить пользователей определенной роли в magento

Есть ли способ привлечь пользователей к определенной роли (например, сотрудников) в Magento? Я пробовал с этим

$roles_users = Mage::getResourceModel('admin/roles_user_collection'); 

Но не знаю, как добавить фильтр для определенной роли.

заранее спасибо

Если вы внимательно посмотрите, как magento хранит роли администратора и пользователей, вы бы это поняли лучше.

Предположим, что вы создаете роль staff , magento сохраняет эту роль в таблице admin_role . Когда вы создаете нового пользователя, пользовательские данные хранятся в таблице admin_user , которая не имеет никакой связи с таблицей admin_role . Но когда вы назначаете этому пользователю роль staff , это назначение снова создает новую роль администратора. По сути, сам пользователь рассматривается как роль администратора.

Это должно работать отлично:

 $output = []; // just an array to hold all the users, you may not need this // instance of the admin_role $model = Mage::getModel('admin/role'); // fetch all roles with name of 'Staff', but get only the first item since two roles cannot have same name $role = $model->getCollection() ->addFieldToFilter('role_name', ['eq' => 'Staff']) ->getFirstItem(); // check to make sure the role exists if ($roleId = $role->getId()) { // get a collection of all the user roles having the Staff role id as a parent_id $staffUsers = $model->getCollection() ->addFieldToFilter('parent_id', ['eq' => $roleId]); // ensure the collection has size if ($staffUsers->getSize()) { // loop through each object and get the user_id values foreach ($staffUsers as $staffUser) { // you can still check to make sure the user_id field is not null if ($staffUser->getUserId()) { // get the user object and do anything with it $user = Mage::getModel('admin/user')->load($staffUser->getUserId()); $output[$user->getId()] = $user->getFirstname() . " " . $user->getLastname(); } } } } var_dump($output); die; 

Надеюсь, поможет.

В magento 2 вы можете добиться этого, используя пользовательский запрос.

 $shippercollection = $objectManager->create('Magento\User\Model\ResourceModel\User\Collection'); $resource = $objectManager->get('Magento\Framework\App\ResourceConnection'); $connection = $resource->getConnection(); $tableName = $resource->getTableName('authorization_role'); $filter = 'Shipper'; //Select Shipper users id from table $sql = "Select user_id FROM " . $tableName." WHERE parent_id = (Select role_id FROM " . $tableName." WHERE role_name = '$filter' LIMIT 1)"; $shipper_users = $connection->fetchAll($sql); $shippermodel = $objectManager->create('Magento\User\Model\User'); $deliveryBoys = $shippermodel->getCollection() ->addFieldToFilter('user_id', array('in' => $shipper_users));