我的脚本是这样的:
$query = Doctrine_Query::create ()
->select('count(p.product_id) as num_a')
->from ( 'ProductComments p' )
->groupBy('p.product_id')
->having('num_a =2 ');
Run Code Online (Sandbox Code Playgroud)
生成的sql是:
SELECT COUNT(i.product_id) AS i__0 FROM productcomments i GROUP BY i.product_id HAVING num_a=2
Run Code Online (Sandbox Code Playgroud)
因此,执行sql时出错.
我有两个问题:
为什么表的别名'i'而不是'p'?
为什么'num_a'在没有替换的条款中'i__0',如何修复它?
谢谢你的建议......
小智 9
我在设置别名时遇到了问题.我必须设置别名,然后使用该别名的"ORDER BY".以下解决方案为我工作:
$myQuery->addSelect('(<my select>) AS my_alias');
$myQuery->orderBy('my_alias');
Run Code Online (Sandbox Code Playgroud)
在结果查询中看起来像"...()AS p_0 ... ORDER BY p_0".我希望它能帮助别人.
1:为什么表'i'的别名而不是'p'?
2:为什么'num_a'中的having子句没有被'i__0'取代,如何修复它?
这两个问题都得到了简单回答:Doctrine使用它自己的别名进行查询.您不需要知道这些别名,因为它们不会影响您,也不需要使用它们.
即使Doctrine命名别名,i__0您也可以使用自定义别名访问该属性,例如,$yourObject->num_a将具有正确的值,即结果count(p.product_id).
要查看查询的输出是一个有用的调试功能,但依赖于应用程序内部是没有意义的,因为这些值仅用于Doctrine的内部机制.
| 归档时间: |
|
| 查看次数: |
24697 次 |
| 最近记录: |