Bagaimana cara mendapatkan pengguna menurut peran secara terprogram

18

Di Drupal 8 saya harus mendapatkan semua pengguna dengan nama peran yang diberikan.

AndrewK
sumber

Jawaban:

28

Maaf, menggunakan nama properti yang salah pertama kali, sebuah jawaban:

use  \Drupal\user\Entity\User;

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

dpm($users);
AndrewK
sumber
1
Perlu dicatat bahwa 'moderator' bukan nama (seperti dalam label) dari peran, seperti yang disarankan pertanyaan, tetapi sebenarnya ID dari peran tersebut.
pasang
10

Jika Anda berada di kelas di mana Anda bisa menggunakan injeksi ketergantungan, atau penangan penyimpanan entitas, Anda juga bisa melakukan ini:

$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);
joachim
sumber
-2

Cara yang tepat adalah menggunakan entitasTypeManager untuk mendapatkan pegangan entitasStorage, dan menggunakannya untuk memuat id. Beberapa contoh:

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

sumber
2
Ini tidak berhasil. Ini tidak mendapatkan pengguna berdasarkan peran, seperti pertanyaan yang diajukan.
pasang