如何通过编程按角色吸引用户


19

在Drupal 8中,我需要通过给定的角色名称来获取所有用户。

Answers:


29

抱歉,第一次使用错误的属性名称,答案是:

use  \Drupal\user\Entity\User;

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

dpm($users);

1
应该注意的是,“主持人”不是该角色的名称(如标签所示),实际上是该角色的ID。
plocks

10

如果您在可以使用依赖项注入或实体存储处理程序的类中,则还可以执行以下操作:

$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

正确的方法是使用entityTypeManager来获取entityStorage句柄,并使用它来加载id。一些例子:

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

2
这行不通。正如所要求的那样,这不能按角色获得用户。
plocks
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.