Come ottenere utenti in base al ruolo a livello di codice


18

In Drupal 8 ho bisogno di ottenere tutti gli utenti in base al nome del ruolo.

Risposte:


28

Spiacenti, prima volta ho usato un nome di proprietà errato, una risposta:

use  \Drupal\user\Entity\User;

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

dpm($users);

1
Va notato che "moderatore" non è il nome (come nell'etichetta) del ruolo, come suggerisce la domanda, ma in realtà l'ID del ruolo.
blocca il

10

Se sei in una classe in cui puoi utilizzare l'inserimento di dipendenze o il gestore dell'archiviazione di entità, puoi anche fare questo:

$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

Il modo corretto è utilizzare entityTypeManager per ottenere l'entità entityStorage e utilizzarlo per caricare gli ID. Qualche esempio:

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

2
Questo non funziona Questo non ottiene gli utenti per ruolo, come richiesto dalla domanda.
blocca il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.