代码如下:用上面注释掉的SQL没问题,用下面的SQL执行。报截图中的错误,但是打印的SQL在MySQL中却能执行。求解!
public function getCount() { // $hql = "SELECT DATE_FORMAT(a.createtime,'%Y') FROM " . self::getClassName() . " a GROUP BY DATE_FORMAT(a.createtime,'%Y')"; $hql = " SELECT DATE_FORMAT(a.createtime, '%Y'), " . "SUM(CASE WHEN a.flag = 0 OR a.flag = 1 OR a.flag = 4 OR a.flag = 7 OR a.flag = 8 OR a.flag = 13 THEN 1 ELSE 0 END) " . "AS 'num',SUM(CASE WHEN a.flag = 9 OR a.flag = 10 THEN 1 ELSE 0 END) AS 'call_num', " . "SUM(CASE WHEN a.flag = 2 OR a.flag = 3 OR a.flag = 5 OR a.flag = 11 OR a.flag = 12 THEN 1 ELSE 0 END) " . "AS 'early_num' FROM " . self::getClassName() ." a GROUP BY DATE_FORMAT(a.createtime, '%Y')"; // var_dump($hql); // die; return $this->getModelsManager()->createQuery($hql)->execute(); }
Phalcon的ORM框架不支持CASEWHEN语句的,直接用原生的吧,或者使用IF函数替换CASEWHEN语法。
Phalcon的ORM也不支持MySQL5.7的json语法,不过我自己写了简易的词法分析代码解决了。
多谢解答!这么复杂的用rawdb直接查询不要用phsql版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。