Я пытаюсь использовать предложение "HAVING" в запросе SQL с использованием метода pakeinate () CakePHP.
После некоторого поиска кажется, что этого нельзя достичь с помощью методов paginate () / find () в Cake.
Код у меня выглядит примерно так:
$this->paginate = array(
'fields' => $fields,
'conditions' => $conditions,
'recursive' => 1,
'limit' => 10,
'order' => $order,
'group' => 'Venue.id');
Одно из полей $ является псевдонимом «расстояние». Я хочу добавить запрос для случая, когда расстояние <25 (например, расстояние HAVING <25). </p>
До сих пор я видел два обходных пути, к сожалению, ни один из них не удовлетворял моим потребностям. Два, которые я видел:
1) Добавление предложения HAVING в опцию «group». например '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 (), так как это потребует больших переделок, а также означает, что мне нужно реализовать собственную логику разбиения на страницы!
Заранее спасибо