Comment obtenir des utilisateurs par rôle par programme


19

Dans Drupal 8, je dois obtenir tous les utilisateurs par nom de rôle donné.

Réponses:


29

Désolé, j'ai utilisé un nom de propriété incorrect pour la première fois, une réponse:

use  \Drupal\user\Entity\User;

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

dpm($users);

1
Il convient de noter que «modérateur» n'est pas le nom (comme dans l'étiquette) du rôle, comme le suggère la question, mais en fait l'ID du rôle.
— plocks

10

Si vous êtes dans une classe où vous pouvez utiliser l'injection de dépendances ou le gestionnaire de stockage d'entités, vous pouvez également procéder comme suit:

$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 bonne façon consiste à utiliser entityTypeManager pour obtenir le descripteur entityStorage et à l'utiliser pour charger les identifiants. Quelques exemples:

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

2
Ça ne marche pas. Cela n'obtient pas les utilisateurs par rôle, comme la question demandée.
— plocks
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.