Сортировка пользователей в SQL запросе по собственному полю

  • 3 Ответов
  • 243 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн voron121

  • ****
  • 222
  • [+]1 / [-]0
  • Метод тыка и мата помогает в кодинге
    • Просмотр профиля
Доброго времени суток, уважаемые форумчане. Пробую вывести список пользователей из БД используя сл конструкцию запроса:

Код: php
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__users'));
$query->where($db->quoteName('categ'). ' = '.$this->category->id ." AND ". $db->quoteName('block'). ' = 0 AND ' .$db->quoteName('day_rate'). ' > 0' );
$query->order($db->quoteName('day_rate'). 'ASC');
$query->setLimit('20');
$db->setQuery($query);
$results = $db->loadObjectList();

Столбец day_rate   - это дневной рейтинг пользователя. Данный столбец мне нужен был в проекте и я его создал вручную в БД. Собственно в чем трабла - сортировка по ид к примеру работает на ура, а вот по столбцу day_rate нет (проверил - сортирует как если бы стоял ид вместо day_rate).

Подскажите, возможно кто то сталкивался: как сделать сортировку именно по полю day_rate ?

И, хоть и не совсем в тему, но да бы не создавать еще один топик: как подтянуть ссылку на контакт пользователя на рандомной странице ? То есть я вывожу список пользователей и мне нужно сделать ссылку на их контакт (страница пользователя, реализовывал стандартными методами Joomla через компонент контактов и плагины Joomla). Я так пониимаю мне нужно подгрузить какой-то хелпер и через него вызвать генерацию арла, но вот какой и как - этого я так и не нашел в сети. С таким еще не сталкивался, по этому прошу помощи.

*

Оффлайн SmokerMan

Ну как минимум
Цитировать
$query->order($db->quoteName('day_rate'). 'ASC');
тут уже ошибка, т.к. нет пробела
Цитировать
$query->order($db->quoteName('day_rate'). ' ASC');

Цитировать
как подтянуть ссылку на контакт пользователя на рандомной странице ?
как-то так
Код
$query->leftJoin('#__contact_details AS c ON c.user_id = id');
узнаете id контакта, формируете ссылку

правда это может вызвать ambiguous
желательно переименовать
Код
$query->from($db->quoteName('#__users'). ' AS u');
и к соответсвущем полям таблицы добавить u

и проверяете запросы на ошибки после $results = $db->loadObjectList();
Код
if ($err = $db->getErrorMsg()) {
    echo $err;
}

*

Оффлайн voron121

  • ****
  • 222
  • [+]1 / [-]0
  • Метод тыка и мата помогает в кодинге
    • Просмотр профиля
спс, буду пробовать. на счет джоина - чет сразу не подумал )

*

Оффлайн voron121

  • ****
  • 222
  • [+]1 / [-]0
  • Метод тыка и мата помогает в кодинге
    • Просмотр профиля
не сработало  )) отходил от пк и когда сел тестить понял что ид пользователя я получаю только после запроса в таблицу с пользователями. То есть запрос то у меня выбирает всех пользователей  у которых categ = ид категории  (чуть сложно объяснить все но суть в том что у каждого пользователя есть своя категория)