relação atualização hasOne comportamento estranho (CakePHP)
-
19-09-2019 - |
Pergunta
Eu tenho um Showcase existente que hasOne
Gallery.
A galeria já existe com o conjunto foreignKey showcase_id
para o valor adequado.
A galeria tem um campo de texto que eu tento atualizar através do Showcase-controlador.
O resultado que eu vejo é uma entrada Gallery extra, ao longo do original, em vez de uma atualização da entrada original.
O que estou fazendo de errado?
Meu Showcase-vista é o seguinte:
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();
função Showcase-controlador Meu:
$uses = array('Showcase','Gallery')
function update(){
if(!empty($this->data)){
$this->Showcase->saveAll($this->data, array('validate'=>'first'));
}
}
O modelo Showcase $hasOne = 'Gallery'
eo modelo $belongsTo = 'Showcase'
Gallery.
é $this->Showcase->saveAll()
a função adequada para usar aqui? Ou eu talvez precise atualizar a entrada Galeria dentro do controlador Gallery? Isso provavelmente trabalho, mas é parece tão un-elegante.
Solução
Eu posso ver que você quer dizer por ser un-elegante, seria bom se ele percebeu que tinha uma relação hasOne e, portanto, atualizados qualquer registro existente.
No entanto actualmente no âmbito Acho que sua melhor opção seria adicionar echo $form->input('Gallery.id', array('type'=>'hidden', 'value'=>$showcase['Gallery']['id']));
à sua vista.
Como uma nota lateral. Na ação do controlador que está actualmente a definir $showcase
se você em vez atribuí-la a $this->data
então você não precisará sempre especificar 'value' => ...
em suas entradas de formulário.