我需要得到我的User
信息,当我调用
$this->User->find('first', array('conditions' => array('User.id' => $user_id)));
结果只包含部分字段。
我已经更新了数据库模式。在开发服务器上,它运行良好并返回所有字段,但在生产服务器上,这些新字段丢失了。这些服务器具有完全相同的配置。
我已经尝试删除app/tmp/cache/models
的内容,我使用File
引擎缓存。
schema.php
文件是最新的,app/tmp/cache/models
文件的内容表明这些字段存在,但我无法在生产服务器上检索它们。唯一的区别可能是数据库和调试级别。我试过复制数据库并将其与开发服务器一起使用,效果很好。
我显然不能在生产服务器上将debug设置为2。
你们中有人经历过类似的行为吗?
PS我使用的是Cake 2.3.3
答案其实很简单。我必须删除的不仅仅是app/tmp/models
的内容,但实际上使它工作的是删除app/tmp/persistent
的内容。
我的回答与@Elwhis略有不同。我在蛋糕2.4.5上。对我来说,没有app/tmp/models
目录或app/tmp/persistent
。models
和persistent
均在app/tmp/cache
下。就像@Elwhis,在app/tmp/cache/models
目录中查找显示缺少字段,所以它令人困惑。
为了修复,我删除了app/tmp/cache/persistent
中的所有文件。注意,如果您删除目录本身,您将从CakePHP获得一个500错误。
我建议在部署过程中添加该目录下文件的删除。
Elwhis:答案其实很简单。我不仅要删除app/tmp/models的内容,还要删除app/tmp/persistent的内容。
这仍然适用于CakePHP 3,它解决了我的问题!
更新1
使用Bake CLI Tool有一个简单的方法来清理缓存,如下所示:
Cache Shell命令
清除一个缓存配置:
bin/cake cache clear
清除所有缓存配置:
bin/cake cache_all