2011-03-30 4 views
2

Kohana와 내 발이 젖어 있지만 페이지 매김에 문제가 있습니다.Kohana 3.1 쿼리 개수 및 페이지 매기기

ErrorException [치명적인 오류] : 클래스 I이 포함 부트 스트랩 파일을 수정 비 상용 위키 다음

발견되지 '페이지 설정'

Kohana::modules(array('database' => MODPATH.'database', 'userguide' => MODPATH.'userguide', 'pagination' => MODPATH.'pagination',)) 
을 나는 다음과 같은 오류가 발생합니다

하지만 도움이되지 않았다.

두 번째 질문은 쿼리 개수와 관련이 있습니다 .... 나는 ORM을 선택하지 않는 한 $ query-count()와 같은 함수가 없다는 것에 놀랐습니다. 대신이 쿼리를 사용하면이 솔루션이 다소 복잡해집니다. 페이지 매김 요청마다 필수 항목 :

$result['count'] = $pagination_query->select('COUNT("*") AS result_count')->execute()->get('result_count'); 

의견이 있으십니까?

답변

4

Kohana 3.1이 다음에서 클래스/kohana 편집 라인 199로 이동

https://github.com/kohana/pagination

에서 다운로드해야합니다 ... 매김 모듈 오지 않는 대단히 감사합니다 ->로 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; 
}