Como faço para obter usuários por função programaticamente

17

No Drupal 8, preciso obter todos os usuários pelo nome da função.

AndrewK
fonte

Respostas:

27

Desculpe, usei o nome errado da propriedade pela primeira vez, uma resposta:

use  \Drupal\user\Entity\User;

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

dpm($users);
AndrewK
fonte
1
Deve-se notar que 'moderador' não é o nome (como no rótulo) da função, como sugere a pergunta, mas, na verdade, o ID da função.
plocks
10

Se você estiver em uma classe em que poderá usar a injeção de dependência ou o manipulador de armazenamento da entidade, também poderá fazer o seguinte:

$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);
joachim
fonte
-2

A maneira correta é usar o entityTypeManager para obter o identificador entityStorage e usá-lo para carregar os IDs. Alguns exemplos:

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

fonte
2
Isso não funciona. Isso não obtém os usuários por função, conforme a pergunta solicitada.
inicia o dia