CakePHP 2.4 - 数据库更新不保存所有传递的数据一个字段永远不会持久化
CakePHP 2.4 - DB Update Doesn't Save All Passed Data One Field is Never Persisted
我正在尝试使用从外部 API 提取的一些数据来更新数据库。 appstatus 和 amount 都来自同一个 API,我可以看到这些值是正确的,并且它们通过要更新的操作一直向下,但是当它们被更新时,数量不会持续存在,而另外两个保存在数据库中。
$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,即使更新响应指示 amount to是 13001.
用于将金额列添加到现有数据库的迁移 table 看起来不错,我可以在数据库中看到它:
ALTER TABLE `applications` ADD `amount_due` DOUBLE NOT NULL AFTER `app_step`
我查看了 docs,使用 create 更新时你应该使用 clear(),但我试过了,它没有做任何事情。知道为什么这没有被坚持吗?
更新
我可以在保存之前更新模型中的任何其他字段,例如:地址、邮政编码、金额、street_name 等;并毫无问题地更新它们,但没有什么 amount_due 永远不会更新。
显然,CakePHP 缓存了模型,因此刚刚添加的新字段不在缓存中。清除缓存后,一切正常。那是我永远不会回来的时间,但这是我从现在开始检查的第一件事,所以吸取教训。
我正在尝试使用从外部 API 提取的一些数据来更新数据库。 appstatus 和 amount 都来自同一个 API,我可以看到这些值是正确的,并且它们通过要更新的操作一直向下,但是当它们被更新时,数量不会持续存在,而另外两个保存在数据库中。
$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,即使更新响应指示 amount to是 13001.
用于将金额列添加到现有数据库的迁移 table 看起来不错,我可以在数据库中看到它:
ALTER TABLE `applications` ADD `amount_due` DOUBLE NOT NULL AFTER `app_step`
我查看了 docs,使用 create 更新时你应该使用 clear(),但我试过了,它没有做任何事情。知道为什么这没有被坚持吗?
更新
我可以在保存之前更新模型中的任何其他字段,例如:地址、邮政编码、金额、street_name 等;并毫无问题地更新它们,但没有什么 amount_due 永远不会更新。
显然,CakePHP 缓存了模型,因此刚刚添加的新字段不在缓存中。清除缓存后,一切正常。那是我永远不会回来的时间,但这是我从现在开始检查的第一件事,所以吸取教训。