私が理解している限り、継承教義を使用したい場合は、スーパークラスのマッピング情報にすべてのサブクラスをリストする必要があります。
マニュアルには次のように記載されています。
/**
* @Entity
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"person" = "Person", "employee" = "Employee"})
*/
class Person
{
// ...
}
@InheritanceType、@DiscriminatorColumn、および @DiscriminatorMap は、マップされたエンティティ階層の一部である最上位のクラスで指定する必要があります。
複数のアプリケーションで再利用される symfony バンドルを開発しているので、これは大きな問題です。アプリケーションで拡張できるスーパークラスを提供したいと考えています。これは、スーパークラスを実装する時点ではサブクラスが不明であることを意味します。
質問Symfony2 で拡張可能なエンティティを使用してポータブル バンドルを作成すると、同じ問題が解決されます。
ここでの質問は次のとおりです。この制限を回避するには、どのようなオプションが必要ですか?
私がこの必要性を持っている分野の1つは注文です。アプリケーションには、独自の注文項目サブタイプを実装する可能性が必要です。私はこの解決策を思いつきましたが、継承のようなものを取得するためだけに多くの追加クラスが必要です。
http://www.griffy.com/pubdoc/4293547/L.png
より良い/より短い解決策を見つけていただければ幸いです。