Кохана 3.1 Запроса И Разбиение На Страницы


Я промокаю ноги от Коханы, но у меня проблемы с пагинацией. я получаю следующую ошибку:

ErrorException [Фатальная Ошибка]: Класс "Пагинация" не найдена

Следуя неофициальной wiki, я внес изменения в файл 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');

Есть предложения?

Большое спасибо

2 2

2 ответа:

Kohana 3.1 не поставляется с модулем разбиения на страницы... он должен быть загружен из

Https://github.com/kohana/pagination

Затем перейдите в класс / kohana edit line 199 from ->uri to - >uri()

Вот и все

Что касается количества запросов....все еще ищу.

Надеюсь, это кому-то поможет

Раньше в классе базы данных была функция count_last_query (), которая предоставляла полные результаты последнего выполнения запроса, как это было бы без каких-либо ограничений или смещений, но они вытащили ее из версии 3.0.9. Вы можете найти документацию по нему здесь:

Http://kohanaframework.org/3.0/guide/api/Database#count_last_query

Я фактически построил на коде из этой функции, чтобы сделать свою собственную функцию запроса count, если вы хотите ее использовать.

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;
}