1

教義エンティティを拡張し、それを永続化するphpクラスを持つことは可能ですか?

例:

/**
 * @Entity
 */
class A {
  /**
   * @ORM\ManyToMany(targetEntity="C", mappedBy="parents")
   */
  protected $children;
}

class B extends A {
...
}

class C {
  /**
   * @ORM\ManyToMany(targetEntity="A", inversedBy="children")
   */
  protected $parents;
}

$b = new B();
$em->persist($b);
4

1 に答える 1

3

はい、可能です。これは継承マッピングと呼ばれますが、子クラスを明示的に宣言する必要が@Entityあり、そのマッピングも明示的に定義する必要があります (子クラスが追加のプロパティを追加する場合)。

継承マッピングの最も一般的な形式は、単一テーブルの継承です。Doctrine マニュアルからのそのようなマッピングの例を次に示します。

namespace MyProject\Model;

/**
 * @Entity
 * @InheritanceType("SINGLE_TABLE")
 * @DiscriminatorColumn(name="discr", type="string")
 * @DiscriminatorMap({"person" = "Person", "employee" = "Employee"})
 */
class Person
{
    // ...
}

/**
 * @Entity
 */
class Employee extends Person
{
    // ...
}
于 2012-02-29T20:16:27.033 に答える