Кохана 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 ответа:
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; }