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列にエントリが作成されます。
お役に立てば幸いです。それはすべてドキュメントにあります