Я пытаюсь использовать предложение "HAVING" в запросе SQL, используя метод CakePHP paginate().
После некоторого поиска вокруг это выглядит так, что этого не может быть достигнуто с помощью методов pake cake()/find().
Код, который у меня есть, выглядит примерно так:
$this->paginate = array(
'fields' => $fields,
'conditions' => $conditions,
'recursive' => 1,
'limit' => 10,
'order' => $order,
'group' => 'Venue.id');
Одно из полей $- это псевдоним "расстояние". Я хочу добавить запрос, когда расстояние < 25 (например, расстояние H < 25).
Я видел два обходных пути до сих пор, к сожалению, не отвечаю моим потребностям. Два из них я видел:
1) Добавление предложения HAVING в опции "группа". например 'group' => 'Venue.id HAVING distance < 25'
. Похоже, что это не работает при использовании в сочетании с разбиением на страницы, поскольку оно испортит начальный запрос подсчета. (т.е. пытается SELECT distinct(Venue.id HAVING distance < 25)
, который явно недействителен.
2) Добавление предложения HAVING после условия WHERE (например, WHERE 1 = 1 HAVING field > 25
). Это не работает, так как кажется, что предложение HAVING должно появиться после оператора группы, который Cake размещает после WHERE в запросе, который он генерирует.
Кто-нибудь знает способ сделать это с помощью метода find() CakePHP? Я не хочу использовать query(), поскольку это потребует много переделок, а также означает, что мне нужно будет реализовать свою собственную логику разбиения на страницы!
Заранее спасибо