鉴别器图中缺少的实体
Posted
技术标签:
【中文标题】鉴别器图中缺少的实体【英文标题】:Entities missing from discriminator maps 【发布时间】:2018-01-28 12:40:53 【问题描述】:我在运行CentOS 7
、php 7.0.25
和mariaDB 5.5.56
的Vagrant 虚拟机上使用Symfony 3.3.15
和Doctrine 2.5.14
设置。
我有几组具有单表继承的实体设置。我让 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】:我不确定确切的问题是什么,但升级到最新版本的 Vagrant (2.0.2) 和 VirtualBox (5.2.6) 可以解决这个问题。
【讨论】:
以上是关于鉴别器图中缺少的实体的主要内容,如果未能解决你的问题,请参考以下文章
Symfony2:字段或鉴别器列映射中实体上列“id”的重复定义