【问题标题】:Ghost Data in CakePHPCakePHP 中的幽灵数据
【发布时间】: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-&gt;BalanceSheet-&gt;create();
  • @ajreal 你是什么意思? Deizel,我在同一个版本。 :( 还有凯文,不幸的是这并没有解决问题。

标签: mysql cakephp


【解决方案1】:

啊……想通了。这是一个样式表声明,有人在代码中使用了不正确的相对路径——它将“css”作为模拟 ID 传递,这就是为什么将副本插入为 0!

这就是帮助我推断出来的原因 (https://stackoverflow.com/a/353493/390977):

检查您的布局是否存在不存在的链接,例如配置错误 链接到 favicon.ico 将导致触发控制器操作 第二次。确保 favicon.ico 指向 webroot 而不是本地目录,否则将生成请求 对于 /controller/action/favicon.ico 而不是 /favicon.ico - 因此 触发你的行动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2011-08-20
    • 2011-11-17
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多