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.