2010-01-10 62 views
2

我已經有一個現有的展示hasOne畫廊。 圖庫已經存在,外鍵showcase_id設置爲正確的值。 圖庫有一個文本字段,我嘗試通過展示控制器進行更新。 我得到的結果是沿原始圖片的額外圖庫條目,而不是原始條目的更新。更新hasone關係行爲奇怪(cakephp)

我在做什麼錯?

我展示視圖如下所示:

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()在這裏使用的正確功能?或者我可能需要更新圖庫控制器中的圖庫條目?這可能會起作用,但看起來很不雅。

回答

4

我可以看到你的意思是不優雅,如果它意識到你有一個hasOne關係,並因此更新任何現有記錄將是很好的。

但是,目前在框架內,我認爲您最好的選擇是將echo $form->input('Gallery.id', array('type'=>'hidden', 'value'=>$showcase['Gallery']['id']));添加到您的視圖。

作爲一個側面說明。在當前正在定義$showcase的控制器操作中,如果您將其分配給$this->data,則在表單輸入中不需要始終指定'value' => ...

+0

優秀,完美的作品。 – 2010-01-12 08:21:59