CakePHP find返回缺少字段的结果


CakePHP find returns results with missing fields

我需要得到我的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/persistentmodelspersistent均在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