MySQL查询未在phalcon中执行

时间:2014-07-23 03:27:46

标签: php mysql phalcon

使用phalcon框架

此mysql查询的目的是在过去1天内在论坛上返回评论计数:

SELECT fc.forum_id, count( fc.forum_id ) AS total_comments
FROM forum_comments AS fc
WHERE DATE_SUB( CURDATE( ) , INTERVAL 1
DAY ) <= fc.updated_at
GROUP BY fc.forum_id
ORDER BY total_comments DESC
LIMIT 0 , 30

它会在phpmyadmin中正确运行,但phalcon会抛出:

  

注意:尝试在第810行的C:\ xampp \ htdocs \ sidra \ app \ controllers \ ApiController.php中获取非对象的属性语法错误,意外的令牌INTEGER(1),靠近&#39; DAY)&lt; = fc.updated_at GROUP BY fc.forum_id ORDER BY total_comments DESC&#39;,解析时:SELECT fc.forum_id,count(fc.forum_id)as total_comments FROM ForumComments as fc WHERE DATE_SUB(CURDATE(),INTERVAL 1天)&lt; = fc.updated_at GROUP BY fc.forum_id ORDER BY total_comments DESC(215)

我的phalcon代码:

$sql = "SELECT fc.forum_id,count(fc.forum_id)as total_comments ".
                "FROM ForumComments as fc ".
                "WHERE DATE_SUB( CURDATE( ) , INTERVAL 1
                 DAY ) <= fc.updated_at ".
                "GROUP BY fc.forum_id ".
                "ORDER BY total_comments DESC ";

        $query = $this->modelsManager->createQuery($sql);
        $staff = $query->execute()->toArray();

如果有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:3)

您的查询是正确的,适用于4.1到5.6.6的MySQL版本。所以似乎createQuery()方法试图解析查询并在INTERVAL子句上失败。我建议你尝试这样的事情:

$yesterday = date('Y-m-d', strtotime("-1 days"));

$sql = "SELECT fc.forum_id,count(fc.forum_id)as total_comments ".
            "FROM ForumComments as fc ".
            "WHERE '$yesterday' <= fc.updated_at ".
            "GROUP BY fc.forum_id ".
            "ORDER BY total_comments DESC ";

$query = $this->modelsManager->createQuery($sql);
$staff = $query->execute()->toArray();