加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Doctrine继承 – 从连接表继承的Single_Table

发布时间:2020-12-13 21:57:47 所属栏目:PHP教程 来源:网络整理
导读:这是我想要的配置: 一个实体“帐户”,其中包含对两个其他实体的JOINED继承:“作者”和“AccountBackend”. 然后我希望“AccountBackend”与其他两个实体具有SINGLE_TABLE继承:“Administrator”和“FeaturedAuthor”.这是我定义它们的方式: Account.php
这是我想要的配置:

一个实体“帐户”,其中包含对两个其他实体的JOINED继承:“作者”和“AccountBackend”.

然后我希望“AccountBackend”与其他两个实体具有SINGLE_TABLE继承:“Administrator”和“FeaturedAuthor”.这是我定义它们的方式:

Account.php

/** 
 * @Entity (repositoryClass="RepositoriesAccount") 
 * @Table(name="accounts")  
 * @InheritanceType("JOINED")
 * @DiscriminatorColumn(name="discr",type="integer")
 * @DiscriminatorMap({"1"="Author","2"="AccountBackend"})
 * @HasLifecycleCallbacks
 */
class Account
{

Curator.php

/**
 * @Entity
 * @Table(name="accounts_author")
 */
class Author extends Account
{

AccountBackend.php

/** 
 * @Entity (repositoryClass="RepositoriesAccountBackend") 
 * @Table(name="accounts_backend")  
 * @InheritanceType("SINGLE_TABLE")
 * @DiscriminatorColumn(name="discr",type="integer")
 * @DiscriminatorMap({"1"="FeaturedAuthor","2"="Administrator"})
 * @HasLifecycleCallbacks
 */
class AccountBackend extends Account
{

FeaturedAuthor.php

/**
 * @Entity
 */
class FeaturedAuthor extends AccountBackend
{

Administrator.php

/**
 * @Entity
 */
class Administrator extends AccountBackend
{

当我定义它们时,当我尝试通过CLI进行更新时,它说

“Entity ‘EntitiesAccountBackend’ has to be part of the discriminator
map of ‘EntitiesAccount’ to be properly mapped in the inheritance
hierachy. Alternatively you can make ‘EntitiesAccountBackend’ an
abstract class to avoid this exception from occuring.”

我没有看到我定义它们的方式有任何问题,这是我第一次尝试在已经继承的Entity上继承.什么意思错了?谢谢!

解决方法

你需要在@DiscriminatorMap中为你的“AccountBackend”类提供一个案例

例如

@DiscriminatorMap({"1"="FeaturedAuthor","2"="Administrator","3"="AccountBackend"})

正如在Documentation中解释的那样

All entity classes that is part of the mapped entity hierarchy (including the topmost class) should be specified in the @DiscriminatorMap. In the case above Person class included.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读