Я пытаюсь использовать count_all()
Метод в Kohana 3.3 для подсчета всех строк таблицы, где идентификатор равен user_id
, Вот мой контроллер
public function action_get_messages()
{
$user_id = $this->request->param('id');
$messages = new Model_Message;
if ($user_id)
{
$messages = $messages->where('user_id', '=', $user_id);
$messages->reset(FALSE);
$message_count = $messages->count_all();
}
else
{
$message_count = $messages->count_all();
}
$pagination = Pagination::factory(array(
'total_items' => $message_count,
'items_per_page' => 3,
));
$pager_links = $pagination->render();
$messages = $messages->get_all($pagination->items_per_page, $pagination->offset, $user_id);
$this->template->content = View::factory('profile/messages')
->set('messages', $messages)
->set('pager_links', $pager_links);
}
Но когда я запускаю код, я получаю следующее сообщение об ошибке:
«Database_Exception [1054]: неизвестный столбец« COUNT («*») »в« списке полей »[SELECT
COUNT("*")
КАКrecords_found
ОТmessages
КАКmessage
ГДЕuser_id
= ‘2’] «
Что означает эта ошибка и где ошибка в моем коде?
Заранее спасибо!
Ошибка в строке 1054, которая, как я полагаю, count_all()
вызов.
Я не понимаю, почему вы звоните reset()
на вашем объекте. Это может быть причиной проблем. Вы также приводите объект к себе, что не нужно. Этот раздел кода может выглядеть так:
if ($user_id)
{
$messages->where('user_id', '=', $user_id);
$message_count = $messages->count_all();
}
Я бы посоветовал использовать ORM::factory
строить свои новые модели в первую очередь.
Документация по Kohana не очень хорошая, но я бы посоветовал прочитать и просмотреть Руководство пользователя ORM ORM сэкономит вам много времени в долгосрочной перспективе, особенно если это большой проект.
Других решений пока нет …