¿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.