从SQL查询加载用户 - 正确的方法

时间:2010-03-02 18:49:12

标签: drupal drupal-6 drupal-themes

我有一个SQL查询,列出了具有特定角色的所有用户的uid

SELECT u.uid 
FROM {users} as u, {users_roles} as ur 
WHERE u.uid = ur.uid AND ur.rid = 10 ORDER BY u.uid DESC

我需要将它们全部加载到数组中作为列表对象。

我问question previously只留下答案,我想做的事情会更容易完成没有视图 - 所以我将改用模板文件。<登记/> 因此这个问题。

我知道怎么做,但显然是method is worth -2

这就是我想要的方式:

$research['sql']   = "SELECT u.uid FROM {users} as u, {users_roles} as ur WHERE u.uid = ur.uid AND ur.rid = 10 ORDER BY u.uid DESC";
$research['sql_result'] = db_query($alumni['sql']);

// Load user objects and store in array
while($user_array = db_fetch_array($research['sql_result'])) {
  // Create user objets based on uid
  $user_obj = user_load($user_array['uid']);

  // Load profile
  profile_load_profile($user_obj);
  $research['users'][$user_obj->uid] = $user_obj;
}

请帮助我应该这样做。

1 个答案:

答案 0 :(得分:1)

我的基本方法看起来很好,除了对profile_load_profile()的调用是多余的:

user_load()函数将使用'load'操作调用hook_user,并且配置文件模块实现hook_user并为加载操作本身调用profile_load_profile(),所以到时候你明确地调用它,它已被隐式调用,你可以放弃它。