Ich habe eine CakePHP 1.3 App und genieße wirklich die Containable behavior zum Abrufen von Daten.CakePHP Model: COUNT (*) in Containable
Nehmen wir an, ich habe Beiträge in einer Eins-zu-viele-Beziehung mit Kommentaren. Ich benutze Containable, um eine Liste aller Posts und der zugehörigen Kommentare abzufragen. Aber ich bin nur daran interessiert, wie viele Kommentare jeder Beitrag hat. Ich habe keine Möglichkeit gefunden, diese Abfrage mit containable zu erreichen, ohne alle Zeilen von Kommentaren zu holen. Ich habe versucht:
Ergebnisse in 'Model "Kommentar" ist nicht mit Modell "Count"' Fehlermeldung verbunden.
$this->paginate=array(
'fields' => array('Post.title, Post.created'),
'contain' => array('Comment'=>array('fields'=>'COUNT(*) AS count'),
);
nicht funktioniert, Ergebnismenge für jeden Beitrag einen leeren Kommentar Array enthält mit Ausnahme der letzten, wo es das Zählfeld enthält, aber die Anzahl aller Kommentare nicht nur die Zugehörigkeit solche mit.
Meine andere Vermutung war
$this->paginate=array(
'fields' => 'Post.title, Post.created, COUNT(Comment.id)',
'contain' => array('Comment'=>array('fields'=>''),
);
aber dies führt zu einem Fehler, weil hasMany Beziehungen unabhängig abgefragt werden, so dass die Antwort-Tabelle nicht in der Abfrage für die Post-Einträge ist. Wie kann ich die Anzahl der Kommentare zählen, die ein Beitrag hat?
Das ist eine nette Idee, aber es löst nicht das Problem für komplexere Abfragen, bei denen das Halten einer mit einer Zeile verknüpften Zählung nicht funktionieren würde (zum Beispiel ein Berichtssystem, wo bestimmte Bedingungen vom Benutzer gewählt werden). Gibt es keinen anderen Weg, eine Zählung mit containable zu erhalten? – Zxaos