如何使用Mysqli驱动程序在Kohana 3.3中count_all()

时间:2015-12-28 09:47:39

标签: php mysqli kohana-orm kohana-3.3

我正在尝试使用kohana 3.3中的count_all()方法来计算id等于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("*") AS records_found FROM messages   AS message WHERE user_id =' 2' ]"

这个错误意味着什么,我的代码中的错误在哪里?  提前谢谢!

1 个答案:

答案 0 :(得分: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将为您节省大量时间,特别是如果它'一个大项目。