Загрузка пользователей из SQL-запроса - правильный путь - PullRequest
1 голос
/ 02 марта 2010

У меня есть 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

Мне нужно загрузить их все в массив как объекты для перечисления.

Я задал вопрос ранее , который оставил меня только с ответом, что то, что я хотел сделать, было бы легче сделать без Views - поэтому я собираюсь использовать вместо этого файл шаблона .
Поэтому этот вопрос.

Я знаю, как это сделать, но, видимо, мой метод стоит -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 Ответ

1 голос
/ 03 марта 2010

Ваш базовый подход мне подходит, за исключением того, что вызов profile_load_profile() избыточен:

Функция user_load() будет вызывать hook_user с операцией 'load', а модуль профиля реализует hook_user и вызывает profile_load_profile() для самой операции загрузки, поэтому к тому времени, когда вы вызываете ее явно, она уже был вызван неявно, и вы можете просто отбросить его.

...