使用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();
如果有其他方法可以做到这一点?
答案 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();