ray*_*ygo 4 php inheritance symfony doctrine-orm
这是我想要的配置:
一个实体"帐户",其中包含对两个其他实体的JOINED继承:"作者"和"AccountBackend".
然后我希望"AccountBackend"与其他两个实体具有SINGLE_TABLE继承:"Administrator"和"FeaturedAuthor".这是我定义它们的方式:
Account.php
/**
* @Entity (repositoryClass="Repositories\Account")
* @Table(name="accounts")
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="discr", type="integer")
* @DiscriminatorMap({"1"="Author","2"="AccountBackend"})
* @HasLifecycleCallbacks
*/
class Account
{
Run Code Online (Sandbox Code Playgroud)
Curator.php
/**
* @Entity
* @Table(name="accounts_author")
*/
class Author extends Account
{
Run Code Online (Sandbox Code Playgroud)
AccountBackend.php
/**
* @Entity (repositoryClass="Repositories\AccountBackend")
* @Table(name="accounts_backend")
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="discr", type="integer")
* @DiscriminatorMap({"1"="FeaturedAuthor","2"="Administrator"})
* @HasLifecycleCallbacks
*/
class AccountBackend extends Account
{
Run Code Online (Sandbox Code Playgroud)
FeaturedAuthor.php
/**
* @Entity
*/
class FeaturedAuthor extends AccountBackend
{
Run Code Online (Sandbox Code Playgroud)
Administrator.php
/**
* @Entity
*/
class Administrator extends AccountBackend
{
Run Code Online (Sandbox Code Playgroud)
当我定义它们时,当我尝试通过CLI进行更新时,它说
"实体'实体\ AccountBackend'必须是'实体\帐户'的鉴别器映射的一部分才能在继承层次中正确映射.或者,您可以将'Entities\AccountBackend'设为抽象类,以避免发生此异常."
我没有看到我定义它们的方式有任何问题,这是我第一次尝试在已经继承的Entity上继承.什么意思错了?谢谢!
你需要在@DiscriminatorMap中为你的"AccountBackend"类提供一个案例
例如
@DiscriminatorMap({"1"="FeaturedAuthor","2"="Administrator", "3"="AccountBackend"})
Run Code Online (Sandbox Code Playgroud)
正如文档中的解释
应在@DiscriminatorMap中指定属于映射实体层次结构(包括最顶层类)的所有实体类.在上面的情况下包括Person类.
| 归档时间: |
|
| 查看次数: |
1975 次 |
| 最近记录: |