這SINGLE_TABLE inheritade是我想擁有的配置:學說傳承 - 從連接表
一個實體「賬戶」具有JOINED繼承到其他兩個實體:「作者」和「AccountBackend」。
然後,我希望「AccountBackend」具有SINGLE_TABLE繼承與其他兩個實體:「管理員」和「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
{
Curator.php
/**
* @Entity
* @Table(name="accounts_author")
*/
class Author extends Account
{
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
{
FeaturedAuthor.php
/**
* @Entity
*/
class FeaturedAuthor extends AccountBackend
{
Administrator.php
/**
* @Entity
*/
class Administrator extends AccountBackend
{
當我把它們定義,當我嘗試通過CLI做一個更新,它說
「實體‘實體\ AccountBackend’必須的一部分鑑別器 'Entities \ Account'的映射將被正確映射到繼承 層次中。或者,也可以讓「實體\ AccountBackend」的 抽象類,以避免發生的歷史此異常。」
我看不出有什麼毛病我定義他們的方式,這是我第一次嘗試有繼承上已經繼承實體。的什麼錯?謝謝!
您好。我在我的Account.php實體 – raygo
有,但您的帳戶實體不是SINGLE_TABLE繼承的一部分。您需要將AccountBackend添加到您的SINGLE_TABLE的DiscriminatorMap – Peekmo