¿Cómo consigo usuarios por rol mediante programación?

18

En Drupal 8 necesito obtener todos los usuarios por nombre de rol dado.

AndrewK
fuente

Respuestas:

28

Lo sentimos, usé un nombre de propiedad incorrecto la primera vez, una respuesta:

use  \Drupal\user\Entity\User;

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

dpm($users);
AndrewK
fuente
1
Cabe señalar que 'moderador' no es el nombre (como en la etiqueta) del rol, como sugiere la pregunta, sino la identificación del rol.
bloquea
10

Si está en una clase donde puede usar la inyección de dependencia, o el controlador de almacenamiento de la entidad, también puede hacer esto:

$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
fuente
-2

La forma correcta es usar el entityTypeManager para obtener el identificador entityStorage y usarlo para cargar identificadores. Algunos ejemplos:

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

fuente
2
Esto no funciona Esto no obtiene a los usuarios por rol, como lo solicitó la pregunta.
bloquea