我想在使用CakePHP paginate()方法的SQL查詢中使用「HAVING」子句。CakePHP:如何在使用find方法構建查詢時使用「HAVING」操作?
後周圍的一些搜索看起來像這樣無法通過Cake的PAGINATE實現()/查找()方法。
我的代碼看起來是這樣的:
$this->paginate = array(
'fields' => $fields,
'conditions' => $conditions,
'recursive' => 1,
'limit' => 10,
'order' => $order,
'group' => 'Venue.id');
其中$域是一個別名「距離」。我想爲距離增加一個查詢,例如距離< 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子句必須拿出在其生成的查詢中的WHERE條件之後。
有誰知道的方式與CakePHP的find()方法來做到這一點?我不想使用query(),因爲這會涉及大量的返工,也意味着我需要實現自己的分頁邏輯!
在此先感謝
怎麼樣'條件=>數組('Venue.distance <=' => 25)'實測值嗎? –
@Chetan我在問題中提到了這個解決方法...它不適用於我.. – cowls
@Piotr,距離是一個別名,所以不能在WHERE子句中使用 – cowls