Drupal 从SQL查询加载用户-正确的方法
我有一个SQL查询,其中列出了具有特定角色的所有用户的Drupal 从SQL查询加载用户-正确的方法,drupal,drupal-6,drupal-themes,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 我需要将它们作为对象加载到一个数组中以供列出 我问了一个问题,答案是我想做的事情在没有视图的情况下更容易完成,所以我将使用模板文件来代替。 所以这个问题 我知道怎么做,但显然我的 我想这样做: $research
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
我需要将它们作为对象加载到一个数组中以供列出
我问了一个问题,答案是我想做的事情在没有视图的情况下更容易完成,所以我将使用模板文件来代替。所以这个问题 我知道怎么做,但显然我的 我想这样做:
$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;
}
请帮助我了解我应该如何做。我认为你的基本方法很好,除了调用
profile\u load\u profile()
是多余的:
user\u load()
函数将使用操作“load”调用hook\u user
,配置文件模块实现hook\u user
并为加载操作本身调用profile\u load\u profile()
,因此在您显式调用它时,它已经被隐式调用,您可以直接删除它。我认为您的基本方法很好,只是对profile\u load\u profile()
的调用是多余的:
user\u load()
函数将使用操作“load”调用hook\u user
,配置文件模块实现hook\u user
并为加载操作本身调用profile\u load\u profile()
,因此在您显式调用它时,它已经被隐式调用了,您可以放弃它。我很好奇,您说每个人都告诉您,最简单的方法是使用视图,但您仍然没有?如果对视图执行此操作,则不需要任何代码,只需要一点高级主题。如果你执意不使用视图,那么看看用户管理页面(Drupal core)是如何提取数据的。@Decipher:感谢你提供有关用户管理页面的提示,这是一种有趣的方法。@Decipher:关于视图与模板文件。事实上,我说的恰恰相反:“没有观点会更容易做到”。对不起,我一定是误读了。作为那种尽可能多地使用代码的人,我想换一种方式,我认为视图是更容易的选择,因为它基本上只是一个SQL查询GUI。我很好奇,你说每个人都告诉过你,最简单的方法是使用视图,但你仍然没有?如果对视图执行此操作,则不需要任何代码,只需要一点高级主题。如果你执意不使用视图,那么看看用户管理页面(Drupal core)是如何提取数据的。@Decipher:感谢你提供有关用户管理页面的提示,这是一种有趣的方法。@Decipher:关于视图与模板文件。事实上,我说的恰恰相反:“没有观点会更容易做到”。对不起,我一定是误读了。作为那种尽可能多地使用代码的人,我想换一种方式,我认为视图将是更容易的选择,因为它基本上只是一个SQL查询GUI。感谢Henrik,我删除了这一行,它仍然可以正常工作。出于某种原因,我的印象是,如果没有调用profile\u load\u profile()
,我的所有新配置文件字段都不会添加到对象中。感谢Henrik,我删除了这一行,它仍然可以正常工作。出于某种原因,我的印象是,如果没有调用profile\u load\u profile()
,我的所有新概要文件字段都不会添加到对象中。