我正在尝试使用CakePHP paginate()方法在SQL查询中使用"HAVING“子句。
经过一番搜索,这看起来不能通过Cake的paginate()/find()方法来实现。
我的代码看起来像这样:
$this->paginate = array(
'fields' => $fields,
'conditions' => $conditions,
'recursive' => 1,
'limit' => 10,
'order' => $order,
'group' => 'Venue.id');
其中一个距离是别名“$fields”。我想添加一个当距离< 25 (例如,距离< 25)时的查询。
到目前为止,我已经看到了两种变通方法,不幸的是,这两种方法都不适合我的需要。我看到的两个例子是:
1)在"group“选项中添加HAVING子句。例如'group' => 'Venue.id HAVING distance < 25'
。当与分页一起使用时,这似乎不起作用,因为它会扰乱执行的初始计数查询。(ie尝试SELECT distinct(Venue.id HAVING distance < 25)
,这显然是无效的语法。
2)在WHERE条件之后添加HAVING子句(例如WHERE 1 = 1 HAVING field > 25
)这不起作用,因为在它生成的查询中,HAVING子句似乎必须出现在组语句之后,而则放置在WHERE条件之后。
有没有人知道用CakePHP的find()方法可以做到这一点?我不想使用query(),因为这会涉及到大量的返工,还意味着我需要实现自己的分页逻辑!
提前感谢
https://stackoverflow.com/questions/7747656
复制相似问题