【发布时间】:2012-01-31 15:09:12
【问题描述】:
我正在尝试使用 CakePHP SaveAll() 方法更新记录,但是它会添加新行而不是更新它。
我的模型如下:A Store hasOne Map
class Store extends AppModel {
var $name = 'Store';
var $hasOne = array(
'Map' => array(
'className' => 'Map',
'foreignKey' => 'store_id',
'dependent' => true,
'exclusive' => true
)
);
}
我的编辑表单有一个商店 ID(隐藏字段)告诉 CakePHP 只更新特定记录。
<?php echo $this->Form->input('Store.id'); ?>
<?php echo $this->Form->input('Store.name', array('label' => 'Store name', 'required')); ?>
<?php echo $this->Form->input('Map.latlng', array('label' => 'Map location', 'required')); ?>
我在 Store 控制器中的编辑方法如下。
if ($this->Store->saveAll($this->data)) {
$this->Session->setFlash('Store has been updated.');
$this->redirect(array('controller' => 'store', 'action' => 'admin_index'));
}
每当我编辑商店时,商店名称都会正常更新,但 CakePHP 会继续在 Map 表上插入新行。
我在这里遗漏了什么吗?谢谢
其他信息
我的调试($this->data)如下
Array
(
[Store] => Array
(
[id] => 52
[name] => Sena The Accessorizer
)
[Map] => Array
(
[latlng] => 3.1580681, 101.7126311
)
)
【问题讨论】:
-
显示
$this->data的调试 -
@Dunhamzzz 问题已更新。谢谢
-
@John - 你的表单是什么->创建?
-
@john Map 没有 id,所以它创建了一个新的..
-
@Dunhamzzz 感谢您的提示!
标签: cakephp cakephp-1.3