我正在尝试使用从外部 API 提取的一些数据来更新数据库。 appstatus 和 amount 都来自同一个 API,我可以看到这些值是正确的,并且它们通过要更新的操作一直保持下去,但是当它们更新时,amount 不会持久化,而其他两个会持久化在数据库中。
$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 更新后 $saved 的输出:
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 列永远不会保留在数据库中,并且保持为 0,即使更新响应指示金额为 13001。
用于将金额列添加到现有数据库表的迁移看起来没问题,我可以在数据库中看到它:
ALTER TABLE `applications` ADD `amount_due` DOUBLE NOT NULL AFTER `app_step`
我已经查看了 docs ,当使用 create 更新时,你应该使用 clear(),但我试过了,它没有做任何事情。有什么想法为什么不坚持吗?
更新
我可以在保存之前更新模型中的任何其他字段,例如:地址、邮政编码、金额、街道名称等;并毫无问题地更新它们,但是永远不会更新 amount_due。
最佳答案
显然,CakePHP 缓存了模型,因此刚刚添加的新字段不在缓存中。清除缓存后,一切正常。那是我永远不会回来的时间,但这是我从现在开始检查的第一件事,所以吸取教训。
关于php - CakePHP 2.4 - 数据库更新不保存所有传递的数据一个字段永远不会持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31195767/