プログラムでロールごとにユーザーを取得する方法


17

Drupal 8では、指定されたロール名ですべてのユーザーを取得する必要があります。

回答:


27

申し訳ありませんが、最初に間違ったプロパティ名を使用しました、回答:

use  \Drupal\user\Entity\User;

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

dpm($users);

1
「モデレーター」は、質問が示すように、ロールの名前(ラベルなど)ではなく、実際にはロールのIDであることに注意してください。
plocks

10

依存性注入またはエンティティストレージハンドラーを使用できるクラスにいる場合は、これも実行できます。

$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

適切な方法は、entityTypeManagerを使用してentityStorageハンドルを取得し、それを使用してIDをロードすることです。いくつかの例:

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

2
これは機能しません。質問が要求したように、これはロール別にユーザーを取得しません。
plocks
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.