【问题标题】:How to count_all() in Kohana 3.3 with Mysqli drivers如何在 Kohana 3.3 中使用 Mysqli 驱动程序 count_all()
【发布时间】:2015-12-28 09:47:38
【问题描述】:

我正在尝试使用 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' ]"

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

【问题讨论】:

    标签: php mysqli kohana-orm kohana-3.3


    【解决方案1】:

    错误在第 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 将为您节省大量时间,特别是如果它是一个大型项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-18
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多