Count und group-by mit Treiben
In der Lehre, die ich tun kann:
public function getCount()
{
$q = $this->createQuery('q')
->select('*')
->addSelect('count(q.name) as count')
->groupBy('q.name')
->orderBy('count DESC');
return $q->execute();
}
Wie kann ich das Treiben in Symfony 1.4?
InformationsquelleAutor Johan Dannenberg | 2012-03-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verdammt! Es ist leichter als das!
Wenn Sie brauchen, um count Ergebnis Zeilen für eine Abfrage, die Sie verwenden müssen, die
count()
Kündigung-Methode, im Grunde:Lesen Sie die folgenden Kapitel der Dokumentation für weitere Informationen: http://www.propelorm.org/documentation/03-basic-crud.html#query_termination_methods
Wenn Sie möchten, fügen Sie ein
count
odernb
zusätzliche Spalte, die Ihrer Suchanfrage, welche eine SQL-Aggregat-Funktionen wieCOUNT
oderSUM
, dann sollten Sie daswithColumn()
Methode:SELECT name, COUNT(*) FROM x GROUP BY name
(dieSELECT *
in der Frage vielleicht ein Roter Hering)Fair sein, und Lesen Sie die Dokumentation. Für Ihre Anfrage schreiben Sie einfach
MyTableQuery::create()->withColumn('COUNT(*)', 'Count')->select(array('Name', 'Count'))->groupByName()->find()
. In beiden Fällen bist du auf dem falschen Weg. Ihr nach unten Abstimmung ist nicht gerechtfertigt.Es ist nicht meine Frage, aber trotzdem das ist eine viel bessere Antwort! Würde Sie Bearbeiten Ihre ursprüngliche Antwort? (Ich höflich uneinig über Rechtfertigung, da deine Antwort nicht die Antwort auf die Frage; jedoch, wenn Sie fixieren Sie Ihre Antwort, die ich gerne wiederherstellen der downvote).
Ich antwortete, auf der Grundlage der Titel, ich mis-Lesen Sie den code... wie auch immer, bearbeitet werden.
InformationsquelleAutor William Durand
versuchen :
Gibt es einige gute Ausschnitte von Informationen auf, treiben Fragen hier -> http://snippets.symfony-project.org/snippets/tagged/criteria/order_by/date
Pflege yo erweitern ? irgendein besonderer Grund ?
Die ActiveQuery API ist viel besser, wirklich fließend, und es ist die empfohlene API zu verwenden, da 1.5. Propel2 den Fokus auf die ActiveQuery Ansatz, der nicht auf Kriterien/Kriterium. Mehr Tipps auf diesem blog-post: propel.posterous.com/design-your-queries-like-a-boss
InformationsquelleAutor ManseUK
Etwas wie:
Ich bin nicht sicher über die
GROUP BY
- möglicherweise müssen Sie einen alias ein, oder geben Sie dieCOUNT
- Klausel. Versuchen Sie es und sehen, was funktioniert durch Experimente:)
Du wirklich muss verwenden Sie eine auto-Vervollständigung der IDE zu nutzen, Treiben (und Lehre) - Ihre Fragen werden sehr viel einfacher zu konstruieren.
Meine übliche Antwort wäre normalerweise wie @ManseUK ist, d.h. auf der Grundlage der Kriterien Klasse - aber das wird abgeschafft werden, wenn Propel 2 kommt, so ist es wahrscheinlich eine gute Idee, um Ihren code jetzt fertig.
find()
, undcount()
zum Beispiel. Treiben soll möglichst einfach sein 😉Wie bereits auf Ihre Antwort, ein einfaches
count()
nicht ausreichen würde.InformationsquelleAutor halfer