2

我有一个现有的 Showcase that hasOneGallery。Gallery 已经存在,foreignKeyshowcase_id设置为正确的值。Gallery 有一个文本字段,我尝试通过 Showcase-controller 对其进行更新。我得到的结果是一个额外的画廊条目,沿着原始条目,而不是原始条目的更新。

我究竟做错了什么?

我的展示视图如下所示:

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'));

}

}

Showcase 模型$hasOne = 'Gallery'和 Gallery 模型$belongsTo = 'Showcase'

$this->Showcase->saveAll()在这里使用正确的功能吗?或者我是否可能需要更新 Gallery 控制器中的 Gallery 条目?这可能会奏效,但看起来很不优雅。

4

1 回答 1

4

我可以理解你所说的不优雅是什么意思,如果它意识到你有一个 hasOne 关系并因此更新任何现有记录,那就太好了。

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

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

于 2010-01-10T22:45:02.610 回答