2011-03-30 69 views
2

我正在用Kohana弄湿我的脚,但是在分页时遇到了麻烦。我得到以下错误:Kohana 3.1查询计数和分页

ErrorException [致命错误]:类 '分页' 未找到

继非官方的维基我修改了引导文件,包括此:

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'); 

有什么建议吗?

非常感谢你

回答

4

的Kohana 3.1不附带分页模块... 它必须从

https://github.com/kohana/pagination

下载然后转到类/ Kohana的编辑行从199 - >的URI - > URI()

,做它

,以查询计数....仍搜索。

希望这可以帮助别人

1

曾经有在规定运行,因为这将是没有任何限制或抵消的最后一个查询的总成绩数据库类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; 
}