对 CakePHP 的 SQL 查询 [关闭]
Posted
技术标签:
【中文标题】对 CakePHP 的 SQL 查询 [关闭]【英文标题】:SQL query to CakePHP [closed] 【发布时间】:2013-09-27 15:48:01 【问题描述】:我对我的数据库有一个 SQL 查询,以获取我网站中最流行的 5 个查询。
SELECT query, COUNT( query ) AS cnt
FROM search_queries
GROUP BY query
ORDER BY cnt DESC
LIMIT 5
当我在 phpmyadmin 中使用它时,它可以工作,它显示了我最常用的 5 个查询。现在,我想将它转换为纯 CakePHP 格式,以便可以将它包含在我的网站中(使用 $this->find())。最简单的写法是什么?
谢谢!
【问题讨论】:
您是否尝试过阅读文档? book.cakephp.org/2.0/en/models/retrieving-your-data.html 【参考方案1】:如果你想使用“纯 CakePHP”,你必须创建一个名为 Query
的模型和一个名为 QueriesController
的控制器
您可以在控制器中使用
$this->Query->virtualFields['cnt'] = 'COUNT(query)';
$mostUsedQueries = $this->Query->find(
'all',
array(
'fields' => array('query', 'cnt'),
'group' => 'query',
'order' => array('cnt' => 'DESC'),
'limit' => 5
)
);
这将生成与您发布的完全相同的查询
【讨论】:
您错过了“订单”方向;'order' => array('cnt' => 'DESC')
和“限制”; 'limit' => 5
【参考方案2】:
你为什么坚持使用find()
?准备好查询后,可以使用query()
或fetchAll()
方法。
看这里:http://book.cakephp.org/2.0/en/models/retrieving-your-data.html
也许你对这种解决方案不感兴趣,我只是把它放在这里以防你不知道你可以这样做。
【讨论】:
以上是关于对 CakePHP 的 SQL 查询 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章