Frage

Ich bin mit einer sehr intrinsischen Datenbank mit einer CakePHP Anwendung und bisher meine Multi-Modelle Ansichten und Controller arbeiten gut. Ich habe eine singuläre Tabelle (Entity), die es auf mehreren anderen Tabellen als Fremdschlüssel id entity_id haben ist

Einige Tische sind 12.59 Beziehungen (wie ein Company ist ein Entity) und einige sind ein bis viele (Entity können mehrere Addresses haben) und so weiter.

Ich werde nicht / kann nicht das Datenbankmodell ändern , so ist dies die Struktur.

Ich habe mit saveAll() Daten auf diesen Tabellen mit Eingabenamen speichern wie:

Entity.type='x' (hidden inside the view)
Company.name
Address.0.street
Address.0.city
Address.1.street
Address.1.city

... and so on ...

und meine speichern alle ist die ganze harte Arbeit tun, BEGIN TRANSACTION alle INSERTs und eine abschließende COMMIT ...

Aber jetzt habe ich eine EntityCategory geschaffen, die eine n n Beziehung ist und erstellt die volle HABTM Beziehung innerhalb des Modells.

Es funktioniert, wenn ich es save() aber nur die HABTM Beziehung, und es spart Everthing, wenn ich saveAll() verwenden (wie bisher) mit Ausnahme der HABTM Beziehung.

Bin ich etwas fehlt? Wie ich diese Arbeit richtig machen? Ich verwende den folgenden Code heute:

if (!empty($this->data)) {
  $this->Entity->saveAll($this->data);
  $this->Entity->save($this->data);
}

Die saveAll() speichert alle Daten in mehreren Tabellen, speichert die ID in Entity->id und die save() speichert die HABTM Beziehungen, aber ich bin nicht sicher, ob es richtig ist, oder wenn es mir Probleme mit sich bringen kann, wenn ich eine gewisse Struktur / Modell ändern.

Ist dies der beste Weg, es zu benutzen? Gibt es eine richtig Art und Weise, dass die Beziehungen innerhalb CakePHP zu retten? Was ist Ihre Erfahrung / Wissen kann mir sagen?

War es hilfreich?

Lösung

Diese festgelegt ist, wenn Sie die nächtlichen .

Seien Sie vorsichtig, etwas anderes könnte brechen.

Andere Tipps

Das Problem mit SaveAll () und HABTM Verbänden ist eine bekannte CakePHP Ausgabe und hat nicht als 1.2 RC2 behoben.

Als fas als beste pratices für das Speichern von verwandten Modelldaten geht, nach dem CakePHP Kochbuch :

  

"Wenn mit dem dazugehörigen Modellen arbeiten, ist es wichtig, dass die Rettung von Modelldaten zu realisieren, sollten immer mit dem entsprechenden CakePHP Modell durchgeführt werden. Wenn Sie einen neuen Beitrag und die dazugehörigen Kommentare zu speichern, dann würden Sie beide Post und Comment-Modelle verwenden während der Operation retten. "

jedoch mit SaveAll () und save () sollte funktionieren, und meiner Meinung nach ist eine flexiblere / generische Lösung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top