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.