Применяя ответ от предыдущего вопроса , я попытался переопределить один из встроенных в CakePHP методов разбиения на страницы:
function paginateCount($conditions = null, $recursive = 0, $extra = array()) {
if (isset($extra['group'])) {
for ($i=0; $i<count($extra['group']);$i++) {
if (strpos(strtolower($extra['group'][$i]),'having')!==false) unset($extra['group'][$i]);
}
exit();
}
$count = parent::paginateCount($conditions, $recursive, $extra);
return $count;
}
Проблема в том, что это, по-видимому, заставляет Cake выполнять запрос MySQL, состоящий просто из имени метода. Очевидно, что это не работает и выдает ошибку:
Ошибка SQL: 1064: в синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса, чтобы использовать около 'paginateCount' в строке 1
Поскольку у меня включена отладка, я вижу, что там, где обычно будет запрос paginateCount ():
1: SELECT COUNT(*) AS `count` FROM `tournaments` AS `Tournament` WHERE 1 = 1
Я просто получаю:
1: paginateCount
Я явно неправильно понял операторы наследования PHP. Кажется, моя функция возвращает имя переопределяемой функции, а не ее значение.
Как я могу это исправить?