2017-05-18 12 views
3

あなたはタイトルから理解することができたようにマッピングされ、私の質問は、私は、このマッピングを済ませた上でレガシーアプリが原因来る:接続し、2つの連続したDoctrineはスーパークラス

/** @MappedSuperclass */ 
abstract class BaseUser 
{ 
    // ... common fields (no associations) 
} 

/** @Entity */ 
class Admin extends BaseUser 
{ 
    // ... with specific fields/associations for admin users 
} 

/** @Entity */ 
class User extends BaseUser 
{ 
    // ... with specific fields/associations for front-end users 
} 

をしかし、今、私は2つの異なるユーザーを持っている必要があります異なるdashboardセクションを持つタイプと、私は新しい2種類によって拡張することもUserクラスabstractを作るために考えた:

/** @MappedSuperclass */ 
abstract class User extends BaseUser 
{ 
    // ... 
} 

/** @Entity */ 
class StandardUser extends User 
{ 
    // ... with specific fields/associations for standard users 
} 

/** @Entity */ 
class AgentUser extends User 
{ 
    // ... with specific fields/associations for agent users 
} 

私はすでにいくつかの研究を行い、明らかに私もを読みましたしかし、2つ以上連続している可能性がある場合はどこでも明確に指定されていません。MappedSuperclass

私の質問です:これは可能ですか?そうでない場合は、代替手段がありますか?

PS:(YES)、それがどんなことなく、2つ以上の連続/チェーンマップされたスーパークラスを使用することが可能です私は教義2.5に私自身のテストからのSymfony 3.2とDoctrine 2.5

+0

「これは可能ですか?」 - これをやってみましたか?最初にチェックすると、時間を節約できます。 – malarzm

+0

@malarzm誰かがすでにこれを知っている人がいたら、私のアイデアはここで質問しています(_私はここで同様の質問を見つけていないので、私自身の質問に答えてください:-)。 PS:これには何も間違いがないことを願っています。 – RocketOne

答えて

1

使用し、symfonyは> = 3.2、私はそれを確認することができます問題。

注:あなた自身でそれを確認しても大した時間を費やすことはありませんが、私はこの情報をDoctrineドキュメントに追加してダブレットを明確にする必要があります。私はこの唯一の疑いを持っていましたか?)。

+0

*マッピングされたスーパークラスは、マッピングされていない通常のクラスと同様に、(単一テーブル継承またはクラステーブル継承を介して)マップされた継承階層の中間に現れることがあります。* - これはドキュメント内にあります。 – ccKep

+0

@ccKep確かにそれは私の低い英語の知識によるものですが、この文章のどの単語(別の方法でマップされた継承階層の中に現れますか?)は、2つ以上のマップされたスーパークラスを連続して使うことができます* *。 – RocketOne

+0

"マップされたスーパークラスは、そうでなければマップされた継承階層の真ん中に現れることができます" - 中には前後に何かがあることが示唆されています。 – ccKep

関連する問題