gpt4 book ai didi

cakephp - saveAll() 插入新行而不是更新

转载 作者:行者123 更新时间:2023-12-01 11:02:49 25 4
gpt4 key购买 nike

我正在尝试使用 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 Controller 中的编辑方法如下。

if ($this->Store->saveAll($this->data)) {
$this->Session->setFlash('Store has been updated.');
$this->redirect(array('controller' => 'store', 'action' => 'admin_index'));
}

每当我编辑商店时,商店名称都会正常更新,但 CakePHP 会继续在 Map 表中插入新行。

我在这里遗漏了什么吗?谢谢

附加信息

我的debug($this->data)如下

Array
(
[Store] => Array
(
[id] => 52
[name] => Sena The Accessorizer
)

[Map] => Array
(
[latlng] => 3.1580681, 101.7126311
)

)

最佳答案

正如@Dunhamzzz 所指出的,Map 没有 ID,因此 CakePHP 插入了一条新记录。

为了解决这个问题,我为 Map.id 创建了一个隐藏字段

<?php echo $this->Form->input('Map.id'); ?>

这将告诉 CakePHP 更新该特定记录而不是插入新记录。

关于cakephp - saveAll() 插入新行而不是更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9081853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com