Я пытаюсь использовать предложение HAVING в запросе SQL с помощью метода CakePHP paginate ().
После некоторых поисков выяснилось, что этого нельзя достичь с помощью методов Cake paginate () / find ().
Код, который у меня есть, выглядит примерно так:
$this->paginate = array(
'fields' => $fields,
'conditions' => $conditions,
'recursive' => 1,
'limit' => 10,
'order' => $order,
'group' => 'Venue.id');
Одно из полей $ - это псевдоним «расстояние». Я хочу добавить запрос, когда расстояние <25 (например, ИМЕЕТ расстояние <25).
Я видел два обходных пути, к сожалению, ни один из которых не подходит для моих нужд. Я видел два:
1) Добавление предложения HAVING в опции «group». например 'group' => 'Venue.id ИМЕЕТ расстояние <25'
. Похоже, что это не работает при использовании в сочетании с разбивкой на страницы, поскольку это нарушает начальный запрос подсчета, который выполняется. (т.е. пытается ВЫБРАТЬ отдельный (Venue.id HAVING distance <25)
, что явно недопустимый синтаксис.
2) Добавление предложения HAVING после условия WHERE (например, WHERE 1 = 1 HAVING field> 25
) Это не работает, поскольку кажется, что предложение HAVING должно стоять после оператора group, который Cake помещает после условия WHERE в генерируемом им запросе.
Кто-нибудь знает, как это сделать с помощью метода find () CakePHP? Я не хочу использовать query (), так как это потребует много переделок, а также означает, что мне нужно будет реализовать свою собственную логику разбиения на страницы!
Заранее спасибо