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.

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);

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);

-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]);

2
Isso não funciona. Isso não obtém os usuários por função, conforme a pergunta solicitada.
inicia o dia
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.