【问题标题】:order by and count in Doctrine Symfony在 Doctrine Symfony 中排序和计数
【发布时间】:2011-10-07 09:43:10
【问题描述】:
id  | name 
1   | aaa  
2   | bbb  
3   | ccc  
4   | ccc  
5   | aaa  
6   | ccc  
7   | ccc  
8   | aaa  
9   | bbb  
10  | ccc  
11  | aaa

我想成为:

name | count
ccc  | 5
aaa  | 4
bbb  | 2

orderby 计数 DESC

我做了:

public function getCount() 
{        
        $q = $this->createQuery('q')
            ->select('*')
            ->addSelect('count(q.name) as count')
            ->groupBy('q.name')
            ->orderBy('count DESC');

        return $q->execute();        
}

但如果:

foreach ($count as $c) {
  echo $c;
}

这仅显示表中的第一个数据。

我该怎么做?

【问题讨论】:

  • 附注:最好分配执行$result = $q->execute(); 的输出,然后释放查询$q->free();,然后才返回结果return $result。这将导致教义释放查询内存以供 PHP 重用。
  • 我必须在哪里使用 $q->free() ?
  • 直接在执行之后。例如:$result = $q->execute(); $q->free(); return $result;

标签: php mysql sql symfony1 doctrine


【解决方案1】:

把你的循环改成这样:

foreach ($count as $c) {
  echo $c->count . "\n";
}

编辑: 调试此问题的一个好方法是将您的返回更改为

$q->fetchArray();

然后在你的循环中

print_r($c);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多