所以我似乎受到了一些问题的困扰,这些问题只影响Symfony中的生产模式,而不影响开发人员模式。这一次,我有一个ManyToOne关联,我试图只获取没有关联的实体(即,它们在数据库中的值为NULL)。这与我在dev-move中预期的完全一样,但在prod模式中,Doctrine抛出了一个"未识别字段"异常。。。对于一个绝对存在的领域。
以下是所讨论实体的相关部分(Page.php):
/**
* @ORMManyToOne(targetEntity="Project", inversedBy="pages")
* @ORMJoinColumn(name="project_id", referencedColumnName="ID")
*/
protected $project;
这是来自控制器(PageController.php)的相关行:
$pages = $this->getDoctrine()->getRepository('JCScopingBundle:Page')->findBy(['project' => null]);
同样,这在使用app_dev.php(即dev模式)时非常有效,但在使用app.php(即prod模式)时,我不断收到"未识别字段"异常。什么东西?
更新:我向同一实体添加了一个"权重"整数字段,该字段在prod
模式中也无法识别。这意味着我不能使用prod
模式,也就是说我不能将更改上传到远程服务器。真的陷入困境。。。
好吧,你瞧,重新启动Apache服务解决了这个问题。显然,这是真正清除APCu元数据缓存的唯一方法。基于这个问题/答案,我受到了启发,尝试了一下:条令映射域不起作用
在我的情况下,我忘记重新启动"memcached"服务。
检查metadata_cache_driver
类型。就我而言:
doctrine:
orm:
metadata_cache_driver:
type: memcached
host: localhost
port: 11211
instance_class: Memcached
由于以前的元数据是缓存的,所以在应用迁移后,条令使用了旧的缓存元数据,而不知道添加了什么新字段。