CakePHP 2.4 - 数据库更新不保存所有传递的数据一个字段永远不会保留

时间:2015-07-02 22:37:27

标签: php mysql cakephp cakephp-2.4

我尝试使用从外部API提取的一些数据来更新数据库。 appstatus和amount都来自同一个API,我可以看到值是正确的,并且它们会一直向下通过要更新的操作,但是当它们被更新时,数量不会保留,而其他两个持久化在DB。

$this->Application->create();
$this->Application->id = $appVal['Application']['id'];
$saved = $this->Application->save($app);
$this->Application->clear();

$ app的数据内容添加到具有正确记录ID 147的模型

2015-07-02 22:23:42 Debug: DATA TO SAVE: Array
(
    [Application] => Array
        (
            [appstatus] => Approved
            [app_step] => 5
            [amount] => 13001
        )

)

更新记录ID 147后保存的输出:

2015-07-02 22:23:42 Debug: DATA THAT WAS SAVED: Array
(
    [Application] => Array
        (
            [appstatus] => Approved
            [user_status] => 2
            [app_step] => 5
            [amount_due] => 13001
            [modified] => 2015-07-02 22:23:42
        )

)

更新后,数据库中的appstatus,app_step和修改后的值都是不同的,但amount列永远不会保留在数据库中,即使更新响应指示数量为13001,仍保持为0。

用于将amount列添加到现有数据库表的迁移看起来没问题,我可以在数据库中看到它:

ALTER TABLE  `applications` ADD  `amount_due` DOUBLE NOT NULL AFTER  `app_step`

我已查看了docs,并且在使用create进行更新时,您应该使用clear(),但我尝试了它并且它没有做任何事情。任何想法为什么不坚持?

更新

我可以在它保存之前更新模型中的任何其他字段,如:地址,邮政编码,金额,街道名称等;并且没有问题地更新它们,但是没有任何amount_due永远不会更新。

1 个答案:

答案 0 :(得分:0)

显然,CakePHP会缓存模型,因此刚添加的新字段不在缓存中。吹掉缓存之后,一切正常。那是我永远不会回来的时间,但这是我从现在开始检查的第一件事,所以吸取了教训。