我的脚本是这样的:
$query = Doctrine_Query::create () ->select('count(p.product_id) as num_a') ->from ( 'ProductComments p' ) ->groupBy('p.product_id') ->having('num_a =2 ');
生成的sql是:
SELECT COUNT(i.product_id) AS i__0 FROM productcomments i GROUP BY i.product_id HAVING num_a=2
因此,执行sql时出现错误。
我有两个问题:
为什么用表的别名'i'代替'p'?
'i'
'p'
为什么'num_a'in have子句不被替换'i__0',如何解决?
'num_a'
'i__0'
谢谢你的建议…
1:为什么表的别名是“ i”而不是“ p”? 2:为什么having子句中的“ num_a”没有被“ i__0”替换,如何解决?
1:为什么表的别名是“ i”而不是“ p”?
2:为什么having子句中的“ num_a”没有被“ i__0”替换,如何解决?
这两个问题都可以简单回答:Doctrine使用它自己的别名进行查询。您不需要知道这些别名,因为它们不会影响您,也不需要使用它。
即使Doctrine命名了别名,i__0您也可以使用自定义别名来访问属性,例如,$yourObject->num_a将具有适当的值,即的结果count(p.product_id)。
i__0
$yourObject->num_a
count(p.product_id)
看到查询的输出是有用的调试功能,但是依赖于应用程序内部是没有意义的,因为这些值仅用于Doctrine的内部机制。