【发布时间】:2011-12-06 03:18:14
【问题描述】:
我有一个 CakePHP 保存方法,它可以为每个保存请求保存多个条目。我不知道为什么——我的 AppModel 没有任何特殊功能,我的 AppController 也没有。我的控制器和模型非常基本。这是我所拥有的:
资产负债表模型
<?php
class BalanceSheet extends AppModel {
var $belongsTo = array(
'Simulation' => array(
'foreignKey' => 'simulation_id',
)
);
}
?>
资产负债表控制器
<?php
class BalanceSheetsController extends AppController {
function generate($simulation_id) {
$data = array(
'BalanceSheet' => array(
'simulation_id' => $simulation_id,
'year' => 2004
)
);
$this->BalanceSheet->save($data);
}
}
?>
数据库架构
CREATE TABLE IF NOT EXISTS `balance_sheets` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`simulation_id` int(11) NOT NULL,
`year` int(11) NOT NULL,
`buildings_and_improvements` float NOT NULL DEFAULT '0',
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=72 ;
当我的资产负债表为空时,我导航到 balance_sheets/generate/10,结果如下:
什么。有没有搞错?那里发生了什么?我怎样才能让它只保存一次?
编辑
原来我的控制器被多次调用(我不知道为什么)。我将继续单步调试调试器以了解发生了什么。
【问题讨论】:
-
请附上保存方法
-
刚刚在 CakePHP 1.3.11 上测试过,它在这里工作。你是哪个版本的?
-
不完全确定出了什么问题,不同的 MySQL 版本发生了一些奇怪的事情。您可以尝试在保存记录之前添加
$this->BalanceSheet->create(); -
@ajreal 你是什么意思? Deizel,我在同一个版本。 :( 还有凯文,不幸的是这并没有解决问题。