gpt4 book ai didi

mysql - CakePHP:在使用 find 方法构建查询时如何使用 "HAVING"操作?

转载 作者:IT老高 更新时间:2023-10-28 23:52:15 25 4
gpt4 key购买 nike

我正在尝试使用 CakePHP paginate() 方法在 SQL 查询中使用“HAVING”子句。

经过一番搜索后,看起来这无法通过 Cake 的 paginate()/find() 方法实现。

我的代码看起来像这样:

$this->paginate = array(
'fields' => $fields,
'conditions' => $conditions,
'recursive' => 1,
'limit' => 10,
'order' => $order,
'group' => 'Venue.id');

其中一个 $fields 是别名“distance”。我想在距离 < 25 时添加查询(例如,距离 < 25)。

到目前为止,我已经看到了两种解决方法,不幸的是,它们都不适合我的需要。我见过的两个是:

1) 在“组”选项中添加HAVING 子句。例如'group' => 'Venue.id HAVING distance < 25' .当与分页一起使用时,这似乎不起作用,因为它弄乱了执行的初始计数查询。 (即尝试 SELECT distinct(Venue.id HAVING distance < 25),这显然是无效语法。

2) 在 WHERE 条件之后添加 HAVING 子句(例如 WHERE 1 = 1 HAVING field > 25 )这不起作用,因为 HAVING 子句似乎必须出现在 Cake 放置在 WHERE 之后的组语句之后它生成的查询中的条件。

有谁知道使用 CakePHP 的 find() 方法可以做到这一点吗?我不想使用 query(),因为那样会涉及大量返工,也意味着我需要实现自己的分页逻辑!

提前致谢

最佳答案

你必须把它和组条件放在一起。像这样

$this->find('all', array(
'conditions' => array(
'Post.length >=' => 100
),
'fields' => array(
'Author.id', 'COUNT(*) as Total'
),
'group' => array(
'Total HAVING Total > 10'
)
));

希望对你有帮助

关于mysql - CakePHP:在使用 find 方法构建查询时如何使用 "HAVING"操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7747656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com