对 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 查询 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

多个 SQL 查询未在 Cakephp 中执行

cakephp中sql查询大于

PHP 在cakephp中获取模型的sql查询

在cakephp中获取模型的sql查询

cakephp中sql查询in

如何使用 CakePHP 查询生成器生成 SQL 函数调用?