【问题标题】:count with doctrine以教义计数
【发布时间】:2011-11-10 16:05:24
【问题描述】:

我有两张桌子:

Name
    id | name | city_id
    1  | aaa  | 1
    2  | vvv  | 2
    3  | ddd  | 2
    4  | sss  | 3
    5  | dds  | 1

City:
id | name
1  | London
2  | NY
3  | Boston

我怎样才能得到城市和计数:

name_city | count
London    | 2
NY        | 2
Boston    | 1

在城市表中:

$q = $this->createQuery('a')
           ->leftJoin('a.Name n')
           ->select('a.name_city as name_city, sum(n.city_id) as sum');

        return $q->execute();

但这是错误的。

【问题讨论】:

    标签: php symfony1 doctrine symfony-1.4 doctrine-1.2


    【解决方案1】:

    您应该使用count() 而不是sum(),此外,您还需要group by

    【讨论】:

      【解决方案2】:

      您似乎没有FROM 子句,没有为a 实体指定对象类型。

      另外,请阅读aggregate values section in the documentation

      【讨论】:

        【解决方案3】:

        这篇文章有点帮助,但我认为我会为希望加入 2 个表并汇总计数的任何人添加更多详细信息。

        例如这篇文章(http://stackoverflow.com/questions/7837671/mysql-join-tables-and-count-instances)但在教义中。

        使用上面的示例,查询将是(教义 2.0):

        $q = $this->em->createQueryBuilder('a')
                   ->select('a.name_city as name_city, count(n.city_id) as sum');
                   ->from('city','a')
                   ->leftJoin('a.Name n')
                   ->groupBy('n.id')
                   ->orderBy('sum')
        
            $query = $qb->getQuery();
            echo $qb->getDql();  // if you want to see the dql created
            $result = $query->getResult();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-17
          相关资源
          最近更新 更多