Как получить пользователей по ролям программно


19

В Drupal 8 мне нужно получить всех пользователей по названию роли.

Ответы:


29

Извините, впервые использовал неверное имя свойства, ответ:

use  \Drupal\user\Entity\User;

$ids = \Drupal::entityQuery('user')
->condition('status', 1)
->condition('roles', 'moderator')
->execute();
$users = User::loadMultiple($ids);

dpm($users);

1
Следует отметить, что «модератор» - это не название (как на этикетке) роли, как предполагает вопрос, а фактически идентификатор роли.
выходит

10

Если вы находитесь в классе, где вы можете использовать внедрение зависимостей или обработчик хранилища сущностей, вы также можете сделать это:

$user_storage = \Drupal::service('entity_type.manager')->getStorage('user');

$ids = $user_storage->getQuery()
  ->condition('status', 1)
  ->condition('roles', 'moderator')
  ->execute();
$users = $user_storage->loadMultiple($ids);

-2

Надлежащим способом является использование entityTypeManager для получения дескриптора entityStorage и его использования для загрузки идентификаторов. Несколько примеров:

\Drupal::service('entity_type.manager')->getStorage('user')->load($uid);
\Drupal::service('entity_type.manager')->getStorage('user')->loadMultiple([$uid1, $uid2]);

2
Это не работает Сюда не попадают пользователи по ролям, так как вопрос задан.
дается
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.