порядок и количество в Doctrine Symfony

#php #mysql #sql #symfony1 #doctrine

#php #mysql #sql #symfony1 #доктрина

Вопрос:

 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
  

количество по порядку 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;
}
  

это показывает мне только первые данные в таблице.

как я могу это сделать?

Комментарии:

1. Просто примечание: хорошей практикой является назначение выходных данных для выполнения $result = $q->execute(); , а затем освобождение запроса $q->free(); и только после этого возврат результата return $result . Это приведет к тому, что doctrine освободит память запросов для повторного использования PHP.

2. где я должен использовать $ q-> free()?

3. непосредственно после выполнения. Например: $result = $q->execute(); $q->free(); return $resu<

Ответ №1:

Измените свой цикл на этот:

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

Редактировать:
хороший способ отладить это — изменить возврат на

 $q->fetchArray();
  

а затем в вашем цикле

 print_r($c);