鉴别器地图中缺少的实体

时间:2018-01-28 12:40:54

标签: php symfony centos doctrine vagrant

我在运行Symfony 3.3.15Doctrine 2.5.14CentOS 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,但仍然没有运气。

有谁知道为什么我会收到这些错误以及如何解决这些错误?

1 个答案:

答案 0 :(得分:0)

我不确定究竟是什么问题,但升级到最新版本的Vagrant(2.0.2)和VirtualBox(5.2.6)可以解决这个问题。