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


18

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

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

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

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

2
Esto no funciona Esto no obtiene a los usuarios por rol, como lo solicitó la pregunta.
— bloquea
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.