cakephp 3是否存储数据库实例的缓存?

cakephp 3是否存储数据库实例的缓存?,cakephp,Cakephp,我试图在CakePHP3中获取数据库表的实例。 简单代码: $r = TableRegistry::get('envelope') ->find() ->where(['enID'=>$id]) ->first(); 它起作用了。但当我在“信封”表中添加新列时,新列不会出现在$r中。 看起来像个缓存?或者我做错了什么 我不知道为什么,但只有当我写下所有列的名称时,它才起作用,比如: $r = TableRegistry::get('envelop

我试图在CakePHP3中获取数据库表的实例。 简单代码:

$r = TableRegistry::get('envelope')
    ->find()
    ->where(['enID'=>$id])
    ->first();
它起作用了。但当我在“信封”表中添加新列时,新列不会出现在$r中。 看起来像个缓存?或者我做错了什么

我不知道为什么,但只有当我写下所有列的名称时,它才起作用,比如:

$r = TableRegistry::get('envelope')
    ->find()
    ->select(array('enID','title_web','description'))
    ->where(['enID'=>$id])
    ->first();

是的,模型模式缓存在cakephp中,如烹饪书中所述

您可以将缓存持续时间设置为所需的任何值,因此,如果您添加列广告,则等待在缓存引擎中设置的时间,您应该会看到它添加到查询中

您可以在config/app.php中找到缓存引擎定义

如果在过期时间之后,表架构未更新,则可能存在其他问题

如果将调试设置为true,则缓存持续时间通常设置为较短的时间,即2分钟


此外,如果您按照说明启用debugKit,当您可以看到所有活动的缓存引擎时,它将显示一个缓存面板,您可以随时重置“蛋糕”模型缓存

我不知道为什么,但它仅在我写入所有列名称时才起作用,如:$r=TableRegistry::get'envelope'->find->selectarray'enID'、'title\u web','description'->其中['enID'=>$id]->第一个;你也可以很容易地从命令行中清除缓存:$bin/cake cache clear\u cake\u model\u。谢谢你真的帮助了我!刚刚切换到调试模式,一切正常!