Update hasOne Beziehung verhält sich seltsam (cakephp)
-
19-09-2019 - |
Frage
Ich habe eine bestehende Showcase, dass hasOne
Galerie einsehen.
Die Galerie ist bereits mit dem foreignKey showcase_id
Satz auf den richtigen Wert.
Die Galerie hat ein Textfeld, dass ich Update über den Showcase-Controller versuchen.
Das Ergebnis, das ich bekommen, ist eine zusätzliche Galerie Eintrag, entlang der ursprünglichen, statt einer Aktualisierung des ursprünglichen Eintrag.
Was mache ich falsch?
My Showcase-Ansicht sieht wie folgt aus:
echo $form->create('Showcase', array('action'=>'update'));
echo $form->input('Showcase.id', array('type'=>'hidden', 'value'=>$showcase['Showcase']['id']));
echo $form->input('Gallery.fulltext', array('type'=>'textarea', 'between'=>'<br>', 'value'=>$showcase['Gallery']['fulltext']));
echo $form->submit('Submit text');
echo $form->end();
My Showcase-Controller-Funktion:
$uses = array('Showcase','Gallery')
function update(){
if(!empty($this->data)){
$this->Showcase->saveAll($this->data, array('validate'=>'first'));
}
}
Die Vitrine Modell $hasOne = 'Gallery'
und die Galerie Modell $belongsTo = 'Showcase'
.
Is $this->Showcase->saveAll()
die richtige Funktion hier zu benutzen? Oder vielleicht muss ich die Galerie Eintrag in der Galerie-Controller aktualisieren? Das wird wahrscheinlich Arbeit aber scheint so un-elegant.
Lösung
kann ich sehen, was Sie mit un-elegant zu sein, wäre es schön, wenn es realisiert man eine hasOne Beziehung hatte und daher alle vorhandenen Datensatz aktualisiert.
Jedoch derzeit im Rahmen Ich denke, die beste Wahl echo $form->input('Gallery.id', array('type'=>'hidden', 'value'=>$showcase['Gallery']['id']));
zu Ihrer Ansicht hinzuzufügen wäre.
Als Randnotiz. In der Controller-Aktion, die derzeit die Definition $showcase
, wenn Sie es stattdessen zuweisen $this->data
dann werden Sie nicht immer müssen 'value' => ...
in Ihren Formulareingaben angeben.