我想獲得所有已分配特定角色的用戶列表。我可以編寫自己的SQL,但我希望儘可能使用api。是否可以使用Drupal API來獲取用戶列表?
回答
一般有對這類任務不Drupal的API函數(拉起符合某些條件的實體)。它傾向於關注API中的單實體CRUD功能;其他一切都取決於開發人員自己的SQL技能。
Views模塊允許您建立按角色,權限等過濾的用戶列表 - 但它可能很容易被過度殺傷。
我不知道任何API可以幫助按角色收集用戶。在這裏你可以得到一些鏈接:http://drupal.org/node/82002。 儘管SO是一項非常棒的服務,但我建議在irc.freenode.org上使用drupal.org或#drupal頻道獲取Drupal相關問題。
詩:有時SQL是不是邪惡的:)
我同意。我看到很多直接查詢數據庫而不是使用預定義函數的Wordpress插件。 – 2009-07-25 22:08:52
只是評論添加StackOverflow非常適合Drupal的問題,更多的人應該在這裏問問他們。 – alxp 2009-07-26 17:23:59
應該避免sql查詢,因爲drupal7將使用新的數據庫API爲了抽象SQL(所以你可以使用像mongodb :) – 2009-12-06 05:27:46
一個簡單的選擇是使用視圖爲您生成SQL(在按下預覽按鈕時顯示其自身的下方),然後使用Drupal SQL abstraction layer獲得您需要的結果,如果您需要訪問原始數據而不是顯示一個View。
它會看起來有點像這樣:
$result = db_query('SELECT users.uid AS uid,
users.mail AS users_mail,
users.name AS users_name
FROM users users');
while ($existing_user = db_fetch_object($result)) {
print_r($existing_user); // or do whatever
}
只需添加更多的字段到視圖,以獲得完整的查詢。
爲我工作的SQL:
$users = ""; $result = db_query('SELECT users.name AS users_name FROM users users INNER JOIN users_roles users_roles ON users.uid = users_roles.uid WHERE users_roles.rid = 4'); while ($existing_user = db_fetch_object($result)) { if ($users != "") $users .= ", "; $users .= $existing_user->users_name; // or do whatever } echo $users;
請記住,這是爲Drupal 6,我不知道這對大用戶羣的性能。不知道Drupal 7.
您可以使用entity_load來獲取用戶數組。這裏是將創建admin用戶的所有郵件列表的樣本(用於發送通知)
<?php
$users = entity_load('user');
$emails = '';
foreach($users as $user) {
if (array_key_exists(3, $user->roles)) {
if (strlen($emails) > 0) {
$emails .= ' ' . $user->mail;
} else {
$emails = $user->mail;
}
}
}
?>
在Drupal 7的,使用EntityFieldQuery是正確的方式。
在Drupal的8以下工作(在這個例子中,加載與administrator
角色的所有用戶)
\Drupal::service('entity_type.manager')
->getStorage('user')
->loadByProperties(['roles' => 'administrator']);
將返回用戶實體的名單。
要獲得uid
秒的列表,而不是一個實體領域查詢:
$query = \Drupal::service('entity_type.manager')->getStorage('user')->getQuery();
$query->condition('roles', 'administrator');
$query->execute();
在Drupal的8:
$users = \Drupal\user\Entity\User::loadMultiple();
如果你想獲得如只有管理員:
$admins = [];
foreach ($users as $user) {
if ($user->hasRole('administrator')) {
$admins[] = $user;
}
}
- 1. 是否可以使用Facebook API來獲取Facepile圖像?
- 2. 有什麼我可以用來模擬AD API來獲取用戶列表嗎?
- 3. 是否可以使用字符串中的api鍵從Directory API獲取用戶列表?
- 4. 是否可以顯示用戶列表?
- 5. 獲取可用的Drupal視圖列表
- 6. 是否可以使用Drush更改用戶的Drupal密碼?
- 7. Facebook的SDK,是否可以通過用戶名來獲取所有用戶?
- 8. 是否可以使用數組列表來實現鏈表?
- 9. 是否可以使用API獲取YouTube的所有視頻?
- 10. 是否可以使用Facebook API獲取洞察指標
- 11. 是否可以使用Graph API獲取Facebook登錄狀態?
- 12. 您是否可以使用Foursquare API來獲得交付可用性
- 13. 是否可以使用ServiceStack.Client來使用非SS REST API?
- 14. PHP:是否可以使用php來獲取MAC地址?
- 15. 是否有Yammer REST API來獲取用戶地理位置
- 16. Yammer API - 我們可以從當前用戶的yammer API獲取組列表嗎?
- 17. JIRA SOAP API:獲取用戶列表
- 18. Facebook API - 獲取用戶組列表
- 19. 是否可以使用jQuery.validVal來驗證選擇下拉列表?
- 20. 是否可以使用Facebook圖形API來搜索用戶的狀態更新?
- 21. 是否可以使用Twitter API訪問來自用戶的所有推文?
- 22. 是否有SDK API或REST API調用來從TFS 2017獲取所有用戶?
- 23. JBoss是否有我可以使用的用戶管理API?
- 24. Twitter使用API獲取用戶狀態值,是否有限制?
- 25. Box API:是否可以列出用戶所屬的組?
- 26. 是否可以使用GIT來管理客戶端許可證?
- 27. Drupal 6.x使用Javascript來確定用戶是否已登錄
- 28. 如何使用jQuery來判斷用戶是否可以滾動?
- 29. 是否可以使用keystoneclient在OpenStack中與用戶關聯的租戶列表?
- 30. 是否可以使用`使用PayPal登錄'來代表用戶創建REST API請求?
我會做我自己的答案,但我覺得我應該擴大這一點。沒有函數可以讓你在Drupal(核心至少)中列出用戶並按角色過濾。您可以編寫自己的函數或像eaton說的那樣,使用views來創建用戶列表。 – codeincarnate 2009-07-26 03:59:12
這裏的意見很簡單。 – 2009-07-26 09:16:18
你__really__應該使用視圖。這是您正在尋找的解決方案。 – alexanderpas 2009-07-30 14:26:17