我有这样的学说查询:
$users = $q->select('ga.publisherId, ga.pageViews')
->from('App_Model_GoogleAnalytics ga')
->where('ga.dateFrom = ?', array($date))
->addWhere("ga.type = 'daily'")->groupBy('ga.publisherId')
->having("SUM(ga.pageViews)>100")
->fetchArray();
看起来不错。但是当执行MYSQL代码时,看起来像这样:
SELECT o.publisherid AS o__publisherid, o.pageviews AS o__pageviews FROM
googleanalytics_ga o WHERE (o.datefrom = '2014-03-01' AND o.type = 'daily')
GROUP BY o.publisherid HAVING SUM(o.pageviews)>10)
看起来教义"吃掉"100中的最后一个0,并用不必要的")"代替它。为什么会发生这种情况?我用的是教义2.3。
在having子句中,试着在)和>之间加空格。
$users = $q->select('ga.publisherId, ga.pageViews')
->from('App_Model_GoogleAnalytics ga')
->where('ga.dateFrom = ?', array($date))
->addWhere("ga.type = 'daily'")->groupBy('ga.publisherId')
->having("SUM(ga.pageViews) > 100")
->fetchArray();
这应该是一个技巧:
->having('SUM(ga.pageViews) > :sum_page_views');
->setParameter('sum_page_views', 100)
希望有帮助:-)