我有一个hasOne
图库的现有展示。
Gallery已经存在,foreignKey showcase_id
设置为正确的值。
Gallery有一个文本字段,我尝试通过Showcase-controller进行更新。
我得到的结果是一个额外的Gallery条目,沿着原始条目,而不是原始条目的更新。
我做错了什么?
我的Showcase视图如下所示:
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();
我的展示控制器功能:
$uses = array('Showcase','Gallery')
function update(){
if(!empty($this->data)){
$this->Showcase->saveAll($this->data, array('validate'=>'first'));
}
}
展示广告模型$hasOne = 'Gallery'
和图库模型$belongsTo = 'Showcase'
。
$this->Showcase->saveAll()
是否适合在此使用?或者我是否需要更新Gallery控制器中的Gallery条目?这可能会奏效但看起来不那么优雅。
答案 0 :(得分:4)
我可以通过不优雅看到你的意思,如果它意识到你有一个hasOne关系并因此更新任何现有记录会很好。
但是目前在框架内,我认为您最好的选择是在视图中添加echo $form->input('Gallery.id', array('type'=>'hidden', 'value'=>$showcase['Gallery']['id']));
。
作为旁注。在当前定义$showcase
的控制器操作中,如果您将其分配给$this->data
,则无需始终在表单输入中指定'value' => ...
。