Làm cách nào để có được người dùng theo vai trò lập trình


17

Trong Drupal 8 tôi cần có được tất cả người dùng theo tên vai trò đã cho.

Câu trả lời:


27

Xin lỗi, lần đầu tiên sử dụng sai tên tài sản, một câu trả lời:

use  \Drupal\user\Entity\User;

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

dpm($users);

1
Cần lưu ý rằng 'người điều hành' không phải là tên (như trong nhãn) của vai trò, như câu hỏi gợi ý, mà thực sự là ID của vai trò.
plocks

10

Nếu bạn đang ở trong một lớp nơi bạn có thể sử dụng phép nội xạ phụ thuộc hoặc trình xử lý lưu trữ thực thể, bạn cũng có thể thực hiện việc này:

$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

Cách thích hợp là sử dụng entityTypeManager để nhận xử lý entityStorage và sử dụng nó để tải id. Vài ví dụ:

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

2
Điều này không hoạt động. Điều này không nhận được người dùng theo vai trò, như câu hỏi yêu cầu.
plocks
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.