Як я можу отримати користувачів за ролями програмно


19

У Drupal 8 мені потрібно знайти всіх користувачів за вказаним іменем ролі.

Відповіді:


29

На жаль, вперше використано неправильне ім’я власності, відповідь:

use  \Drupal\user\Entity\User;

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

dpm($users);

1
Слід зазначити, що "модератор" - це не назва (як на ярлику) ролі, як підказує питання, а власне ідентифікатор ролі.
заговори

11

Якщо ви перебуваєте в класі, де ви можете використовувати ін'єкцію залежностей або обробник об’єктів зберігання даних, ви також можете зробити це:

$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

Правильним способом є використання entіTypeManager, щоб отримати обробку entroStorage, і використовувати його для завантаження ідентифікаторів. Деякі приклади:

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

2
Це не працює. Це не отримує користувачів за роллю, як вимагає запитання.
заговори
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.