프로그래밍 방식으로 역할별로 사용자를 얻는 방법


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
'moderator'는 질문에서 알 수 있듯이 역할의 이름 (라벨에서와 같이)이 아니라 실제로 역할의 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.