我正在尝试使用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("*")"[从
messages
选择COUNT("*")
ASrecords_found
如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会为您节省大量时间,尤其是如果它是一个大型项目。