Doctrine2では、親エンティティクラスがある場合、次のようにPerson
設定します。
/**
* @Entity
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"person" = "Person", "employee" = "Employee", , "client" = "Client"})
*/
class Person
{
// ...
}
および次のようなサブクラスClient
:
/** @Entity */
class Client extends Person
{
// ...
}
次のようにインスタンス化する場合Person
:
$person = new Person();
Doctrine2は、@DiscriminatorMap
ステートメント(上記)に対応するマッピングをチェックPerson
し、見つかった場合は、上記で設定されたテーブル列に文字列値を作成します@DiscriminatorColumn
。
したがって、次のようなインスタンスを作成することにした場合Client
:
$client = new Client();
これらの原則に従って、Doctrine2は、でパラメーターを宣言している限り、インスタンスを作成します@DiscriminatorMap
。また、インスタンス化されたばかりのエンティティクラスのタイプを反映するために、Person
テーブルのdiscr列にエントリが作成されます。
お役に立てば幸いです。それはすべてドキュメントにあります