Why does column alias not work in doctrine?

后端 未结 3 585
伪装坚强ぢ
伪装坚强ぢ 2021-01-11 19:19

My script is like this:

$query = Doctrine_Query::create ()
  ->select(\'count(p.product_id) as num_a\')              
  ->from ( \'ProductComments p\'          


        
相关标签:
3条回答
  • 2021-01-11 19:50

    I also had a problem with setting alias. I had to set alias and then use "ORDER BY" with that alias. Following solution worked for me:

    $myQuery->addSelect('(<my select>) AS my_alias');
    $myQuery->orderBy('my_alias');
    

    In the result query looked like "...() AS p_0 ... ORDER BY p_0". I hope it will help someone.

    0 讨论(0)
  • 2021-01-11 19:59

    1: why is the alias of the table 'i' instead of 'p'?

    2: why is the 'num_a' in having clause not replaced with 'i__0',how to fixed it?

    Both questions are simply answered: Doctrine uses it's own aliases for the query. You do no need to know these aliases since they will not affect you nor will you need to work with it.

    Even though Doctrine names the alias i__0 you can access the attribute with your custom alias, e.g. $yourObject->num_a will have the proper value, namely the result of count(p.product_id).

    To see the output of your query is a useful debug feature, but relying on in inside your application is non-sense since these values are only used for the internal mechanisms of Doctrine.

    0 讨论(0)
  • 2021-01-11 20:05

    This would not be valid SQL.

    SQL standard state that SELECT will be logically executed after having. So You need to repeat aliased code in having.

    Good advice. As long as You work with SQL consuming DBs stick as closely to SQL as possible.

    0 讨论(0)
提交回复
热议问题