【问题标题】:Doctrine replaces last query character with bracket教义用括号替换最后一个查询字符
【发布时间】:2014-03-27 09:20:55
【问题描述】:

我有这样的教义查询:

$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.x-dev 和 php 5.3。

【问题讨论】:

  • 可以在 100 之后添加可用空间吗?

标签: php mysql symfony doctrine-orm


【解决方案1】:

尝试在有子句的 ) 和 > 之间放置空格。

$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();

【讨论】:

  • 对。似乎是学说解析问题。谢谢。
【解决方案2】:

这应该是诀窍:

->having('SUM(ga.pageViews) > :sum_page_views');
->setParameter('sum_page_views', 100)

希望这会有所帮助:-)

【讨论】:

    猜你喜欢
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多