ฉันจะรับผู้ใช้ตามบทบาททางโปรแกรมได้อย่างไร


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
ควรสังเกตว่า 'ผู้ดำเนินรายการ' ไม่ใช่ชื่อ (ตามที่ระบุในฉลาก) ของบทบาทตามที่คำถามแนะนำ แต่จริงๆแล้ว 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 และใช้เพื่อโหลดรหัส ตัวอย่างบางส่วน:

\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.