Ich habe drei Modelle, Benutzer, Kommentare und Seiten.Wie kann ich die 'enthalten Anfragen in CakePHP minimieren?
Benutzerhat vieleKommentare und KommentarezuSeiten gehören.
Alle Modelle verwenden das Verhalten containable
und den Standardwert recursive -1
.
Wenn ich eine find()
Abfrage Kommentare rufen, mit dem enthalten Anfrage einschließlich der Seite Bereich des Modells, das korrekt gibt die Ergebnisse einer einzigen Abfrage verwenden, automatisch die Seite Tabelle für den Benutzer verbindet.
Wenn ich eine ähnliche Abfrage aus dem Benutzer Modell nennen (enthaltenKommentar und Comment.Page), ist das Ergebnis eine Abfrage, um die Kommentare, die von einer Abfrage pro Kommentar gefolgt beziehen zu Quelle der entsprechenden Seite.
Gibt es eine Möglichkeit, die Modelle zu konfigurieren, um die Optimierung JOIN zu halten? Ich nahm die belongsTo Erklärung über das verwandte Modell (Kommentare) zum Host-Modell folgen würde durch (Benutzer).
UPDATE
ich sollte klarstellen, hat meine Frage eine vereinfachte Version meiner aktuellen Fallstudie. Obwohl die Minimallösung I Modell dieser anfänglichen würde erfordernhasManyModellbelongsToModell Struktur, suche ich auch für die Lösung an einem oder mehreren zusätzlichen belongsToModelle unten in der Kette (die Würde ich automatisch LINKE VERBINDUNGEN verwenden, da dies machbar wäre).
Hallo Colby. Hast du in der Praxis ein Beispiel dafür? Ich denke, dieser Ansatz kann sowohl bei einem meiner eigenen Projekte als auch beim Original-Poster helfen. –
Ich glaube, so etwas in Ihrem Controller würde Ihre Abfragen für den gesamten Controller enthalten. 'Funktion beforeFilter() \t { \t \t Eltern :: beforeFilter(); \t \t $ this-> Modell-> contain ('RelatedModelStuff'); \t \t \t} // beforeFilter' –
Danke Colby, das ist nicht ganz das, was ich suchte, aber der beforeFilter enthält Deklaration ist ein nützlicher Schnipsel, Prost. – Rhys