更新hasone关系表现奇怪(cakephp)

时间:2010-01-10 14:54:55

标签: cakephp relationship

我有一个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条目?这可能会奏效但看起来不那么优雅。

1 个答案:

答案 0 :(得分:4)

我可以通过不优雅看到你的意思,如果它意识到你有一个hasOne关系并因此更新任何现有记录会很好。

但是目前在框架内,我认为您最好的选择是在视图中添加echo $form->input('Gallery.id', array('type'=>'hidden', 'value'=>$showcase['Gallery']['id']));

作为旁注。在当前定义$showcase的控制器操作中,如果您将其分配给$this->data,则无需始终在表单输入中指定'value' => ...