Bagaimana cara mendapatkan pengguna menurut peran secara terprogram


18

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

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);

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);

-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]);

2
Ini tidak berhasil. Ini tidak mendapatkan pengguna berdasarkan peran, seperti pertanyaan yang diajukan.
pasang
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.