3 Stimmen

CakePHP - rekursiv auf bestimmte Felder im Modell?

Ich bin ziemlich neu in CakePHP, aber ich glaube, ich fange an, den Dreh rauszukriegen. Ich versuche, verwandte Tabelle Informationen rekursiv zu ziehen, aber ich möchte angeben, welche verwandte Modelle auf rekursiv zu sein. Lassen Sie mich Ihnen ein Beispiel geben, um mein Ziel zu demonstrieren:

Ich habe ein Modell "Kunde", das Informationen wie Firmenname, Website usw. enthält. "Kunde" hat viele "Adressen", die Informationen zu einzelnen Kontakten wie Kontaktname, Straße, Ort, Bundesland, Land usw. enthalten. Der "Kunde" gehört auch zum "Kundentyp", der nur beschreibende Informationen zur Kategorie enthält - einen Namen und eine Beschreibung, z. B. "Vertriebshändler" oder "Hersteller".

Wenn ich eine Suche auf "Customer" möchte ich assoziierte "CustomerType" und "Address" Informationen als Sub-Arrays zu erhalten, und dies funktioniert gut, nur durch die Einrichtung der hasMany und belongsTo Verknüpfungen richtig. Aber jetzt, hier ist mein Problem: Ich möchte zugehörige Informationen zu Staat/Land erhalten. Also, statt jeder "Adresse" Array Zeile nur mit "state_id", ich will es zu haben "Staat" => array("id" = 20, "Name" = "New York",...) usw.

Wenn ich $recursive auf einen höheren Wert (z.B. 2) im Partnermodell setze, erhalte ich das, was ich für die Informationen zu Staat/Land in jeder "Adresse" möchte. ABER es rezirkuliert auch auf "CustomerType", und das führt dazu, dass das Feld "CustomerType" meines "Partner"-Objekts ein riesiges Array aller Kundenobjekte enthält, die mit diesem Typ übereinstimmen, das Tausende lang sein könnte.

Der Punkt ist also, ich möchte NICHT auf "CustomerType" rekursieren, nur auf "Adresse". Gibt es eine Möglichkeit, wie ich das einrichten kann?

Entschuldigen Sie die langatmige Frage, und vielen Dank im Voraus!

9voto

Andrei Diaconescu Punkte 458

Ich schlage vor, dass Sie das Verhalten "eindämmbar" verwenden; siehe weitere Hilfe auf der Kuchenseite im Buch: http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html

3voto

bancer Punkte 7305

Manchmal erzeugt containable zu viele Abfragen. Eine andere Möglichkeit, das zu erreichen, was Sie wollen, ist, das CustomerType-Modell zu entbinden. Weitere Details finden Sie hier: http://teknoid.wordpress.com/2008/07/17/forcing-an-sql-join-in-cakephp/ , http://mark-story.com/posts/view/using-bindmodel-to-get-to-deep-relations .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X