我在运行Symfony 3.3.15
,Doctrine 2.5.14
和CentOS 7
的Vagrant虚拟机上使用php 7.0.25
mariaDB 5.5.56
设置。
我有几组实体设置单表继承。我让Doctrine为我制作鉴别图。出于某种原因,Doctrine似乎没有将所有相关实体添加到鉴别器映射中。这是由几组实体发生的。例如:
我有一个表映射了10个实体,但是当我得到带有$this->getDoctrine()->getManager()->getClassMetadata(ParentEntity::class)
的鉴别器映射时,它只有discriminatorMap
数组中的8个条目。在尝试加载页面时,我收到如下错误:
实体' ChildEntity'必须成为'ParentEntity'的鉴别图的一部分。要在继承层次结构中正确映射。或者,您可以制作“ChildEntity'一个抽象类,以避免发生此异常。
这只发生在我的开发机器上。我在生产中运行代码(AWS上的CentOS 7)没有问题。
我认为这可能是一个缓存问题like this,但我已经清除了Symfony缓存(并删除并重新创建了它),并且我还使用console doctrine:cache:clear-metadata
清除了Doctrine缓存但没有变化。我也尝试将整个项目的权限设置为0777
,但仍然没有运气。
有谁知道为什么我会收到这些错误以及如何解决这些错误?
答案 0 :(得分:0)
我不确定究竟是什么问题,但升级到最新版本的Vagrant(2.0.2)和VirtualBox(5.2.6)可以解决这个问题。