2015-12-28 1 views
0

Я пытаюсь использовать метод count_all() в kohana 3.3 для подсчета всех строк таблицы, где id равен user_id. Вот мой контроллерКак to count_all() в Kohana 3.3 с драйверами Mysqli

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("*") AS records_found ОТ messages AS message WHERE user_id = '2']»

Что означает эта ошибка и где ошибка в моем коде? Спасибо заранее!

ответ

0

Ошибка на линии 1054, что, я думаю, является вызовом count_all().

Я смущен, почему вы вызываете reset() на свой объект. Это может вызвать проблемы. Вы также бросаете объект себе, что не нужно. Та часть кода может выглядеть следующим образом:

if ($user_id) 
{ 
    $messages->where('user_id', '=', $user_id); 
    $message_count = $messages->count_all(); 
} 

Я бы посоветовал использовать в ORM::factory для создания новых моделей в первую очередь.

Документация Kohana невелика, но я бы посоветовал прочитать и посмотреть через ORM User Guide, поскольку ORM в конечном итоге избавит вас от лишнего времени, особенно если это большой проект.

Смежные вопросы