我正在和Kohana擦肩而过,但是遇到了分页问题。我收到以下错误:
ErrorException [致命错误]:类 找不到'分页'
在非官方维基之后我修改了bootstrap文件以包含这个:
Kohana::modules(array( 'database' => MODPATH.'database', 'userguide' => MODPATH.'userguide', 'pagination' => MODPATH.'pagination', ))
但这似乎没有帮助。
我的第二个问题是关于查询计数....我很惊讶没有像$ query-count()的函数,除非我选择ORM而不是我发现这个解决方案有点笨重,因为查询计数是一个必须为每个分页请求:
$result['count'] = $pagination_query->select('COUNT("*") AS result_count')->execute()->get('result_count');
有什么建议吗?
非常感谢
答案 0 :(得分:4)
Kohana 3.1不附带分页模块...... 必须从
下载https://github.com/kohana/pagination
然后从 - > uri转到 - / kohana编辑行199 - > uri()
这样做
关于查询计数....仍在搜索。
希望这有助于某人
答案 1 :(得分:1)
在Database类中曾经有一个count_last_query()函数,它提供了上次查询运行的总结果,因为它没有任何限制或偏移量,但是它们从版本3.0.9中提取。你可以在这里找到它的文档:
http://kohanaframework.org/3.0/guide/api/Database#count_last_query
如果你想使用它,我实际上已经建立了该函数的代码来创建我自己的计数查询函数。
protected static function _pagedQuery($query) {
$sql = (string)$query;
if (stripos($sql, 'LIMIT') !== FALSE) {
// Remove LIMIT from the SQL
$sql = preg_replace('/\sLIMIT\s+[^a-z]+/i', ' ', $sql);
}
if (stripos($sql, 'OFFSET') !== FALSE) {
// Remove OFFSET from the SQL
$sql = preg_replace('/\sOFFSET\s+\d+/i', '', $sql);
}
if (stripos($sql, 'ORDER BY') !== FALSE) {
// Remove ORDER BY from the SQL
$sql = preg_replace('/\sORDER BY\s+`\w+`(\.`\w+`)?(\s+DESC|\s+ASC)?/i', '', $sql);
}
$db = Database::instance();
$result = $db->query(Database::SELECT, '
SELECT COUNT(*) AS ' . $db->quote_identifier('total_rows') . '
FROM (' . $sql . ') AS ' . $db->quote_table('counted_results'),
TRUE
);
return (int)$result->current()->total_rows;
}