Wie erhalte ich Benutzer durch Rolle programmgesteuert


17

In Drupal 8 muss ich allen Benutzern einen Rollennamen geben.

Antworten:


27

Entschuldigung, beim ersten Mal wurde ein falscher Eigenschaftsname verwendet, eine Antwort:

use  \Drupal\user\Entity\User;

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

dpm($users);

1
Es sollte beachtet werden, dass 'Moderator' nicht der Name (wie in der Bezeichnung) der Rolle ist, wie die Frage nahelegt, sondern die ID der Rolle.
— Plocks

10

Wenn Sie sich in einer Klasse befinden, in der Sie die Abhängigkeitsinjektion oder den Entitätsspeicherhandler verwenden können, können Sie dies auch tun:

$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

Die richtige Methode besteht darin, den entityTypeManager zum Abrufen des entityStorage-Handles und zum Laden von IDs zu verwenden. Einige Beispiele:

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

2
Das geht nicht. Hierdurch werden die Benutzer nicht nach Rolle abgerufen, wie bei der angeforderten Frage.
— Plocks
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.