CakePHP hasAndBelogsToMany mit save() vs. saveAll()
Ich bin mit einem sehr systeminternen Datenbank mit einer CakePHP Anwendung und bisher sind meine multi-Modellen, Ansichten und Controllern funktionieren. Ich haben einen einzigartigen Tisch ( Entity
), die haben es id
auf mehreren anderen Tabellen als Foreign Key entity_id
Einige Tabellen sind eins-zu-eins-Beziehungen (Wie ein Company
ist eine Entity
) und einige sind einer zu viel (Entity
können mehrere Addresses
) und so weiter.
Ich nicht/kann es nicht ändern, die Datenbank-Modell, das ist also die Struktur.
Ich habe mit saveAll()
zum speichern von Daten auf die Tabellen mit input-Namen 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 ...
mein und speichern Sie alle tun all die harte Arbeit, die BEGIN TRANSACTION
alle INSERT
s-und a-Finale COMMIT
...
Aber jetzt habe ich einen EntityCategory
das ist eine n zu n Beziehung erstellt und die volle HABTM
Beziehung in das Modell.
Es funktioniert, wenn ich save()
es aber nur die HABTM
Beziehung, und es speichert alles, wenn ich saveAll()
(nach wie vor), außer für die HABTM
Bezug.
Bin ich etwas fehlt ? Wie kann ich diese korrekt ? Ich bin mit dem folgenden code heute:
if (!empty($this->data)) {
$this->Entity->saveAll($this->data);
$this->Entity->save($this->data);
}
Den saveAll()
speichert alle Daten in verschiedenen 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 bringt mir Probleme, wenn ich eine Struktur/Modell.
Ist dies der beste Weg, es zu benutzen? Gibt es eine richtige Weise zu speichern, dass die Beziehungen innerhalb CakePHP ? Was Ihre Erfahrungen/Kenntnisse können mir sagen ?
InformationsquelleAutor Fernando Barrocal | 2008-09-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist behoben, wenn Sie die download -nächtliche.
Seien Sie vorsichtig, wenn Sie etwas anderes brechen kann.
InformationsquelleAutor Chris Hawes
Das problem mit saveAll() und HABTM Verbände ist eine bekannte CakePHP Problem, und ist noch nicht geklärt, wie der 1.2 RC2.
Als fas als best pratices für das speichern der zugehörigen Modell-Daten geht, entsprechend den CakePHP -Kochbuch:
Jedoch mit saveAll() und save() funktionieren sollte, IMHO, ist eine flexiblere/generische Lösung.
InformationsquelleAutor Jacob