Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

запрос к БД
http://forum.kohanaframework.su/viewtopic.php?f=33&t=493
Страница 1 из 1

Автор:  doppermine [ 13 дек 2012, 02:54 ]
Заголовок сообщения:  запрос к БД

Здравствуйте!

Возникла проблема:
есть 2 таблицы

incident (id, incident_description)
comment (id, incident_id, comment_description)

остальные поля опустил, пока они не важны

Необходимо вывести события отсортированные по количеству комментариев, в порядке убывания.
Вот SQL запрос:
Код:
SELECT incident.*, COUNT(comment.id) AS com 
FROM incident
LEFT JOIN comment ON comment.incident_id=incident.id
GROUP BY incident.id
ORDER BY com DESC



Однако я теряюсь как это сделать через ORM. Читал, что count() там работает через "не хочу".

Буду весьма благодарен за любую помощь.

P.S. Простой запрос ORM на вывод событий по определенной категории выглядит так:
Код:
$content->incidents = ORM::factory('incident')
         ->with('location')
         ->join('incident_category', 'incident.id', 'incident_category.incident_id')
         ->where('incident_active', '1')
         ->where('category_id', $category_id)
         ->limit('10')
         ->orderby('incident_date', 'desc')
         ->find_all();

Автор:  Zorato [ 14 дек 2012, 01:20 ]
Заголовок сообщения:  Re: запрос к БД

По мотивам этого ответа: http://stackoverflow.com/a/2283412
Запрос:
Код:
SELECT incident.*
  FROM incident
  JOIN (
    SELECT count(comment.id) AS c, comment.incident_id
      FROM comment
      GROUP BY comment.incident_id
    ) com
    ON com.incident_id=incident.id
  ORDER BY com.c DESC

Я думаю, что лучше всего делать через простой запрос (не query builder или ORM), если вам нужноподставлять какие-то значения, то используйте http://kohanaframework.org/3.3/guide/da ... ameterized
Код:
  
$query = DB::query(Database::SELECT, 'здесь запрос');
$result = $query->as_object('Model_Incident')->execute();             

метод as_object обернет все полученные записи(ряды) в объект класса 'Model_Incident', т.е. вы сможете дальше спокойно использовать ORM.
Надеюсь помог, если есть синтаксические ошибки или другие непонятки - пишите, разберем.

Автор:  doppermine [ 17 дек 2012, 00:25 ]
Заголовок сообщения:  Re: запрос к БД

Код:
Fatal error: Class 'DB' not found in /var/www/ushahidi/themes/112_cloud/hooks/register_commented_blocks.php on line 37


проблема в том, что это Кохана версии 2, и прикручена к платформе Ushahidi :(

Автор:  Zorato [ 17 дек 2012, 01:07 ]
Заголовок сообщения:  Re: запрос к БД

это следовало указать в первом предложении первого сообщения. Сечас нет времени лезть в документацию по 2й версии, но я вижу 2 варианта:
1) найти способ просто выполнить запрос, который я написал выше.
2) подключить модуль Database из 3й версии, по идее он должел легко подключиться.
Хотя если честно, про 2ю версию мало что знаю - начал работу с коханой с версии 3.2

Страница 1 из 1 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/