エンティティに単純なテーブル継承があります。次のように言います。
/**
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="type", type="string")
* @DiscriminatorMap({"base"="BaseArticle", "extended"="ExtendedArticle"})
*/
class BaseArticle extends \Models\BaseModel{
...
}
class ExtendedArticle extends BaseArticle{
/**
* @column(type="string")
*/
protected $extendedProperty;
}
すべての記事タイプでクエリを実行する必要がありますが、一部のタイプでは、拡張された ExtendedArticle にあるプロパティによってクエリを制限します。
SELECT a FROM BaseArticle a WHERE (a INSTANCE OF BaseAricle) OR (a INSTANCE OF ExtendedArticle AND a.extendedProperty = "xy")
これにより、次の例外が発生します。
[Semantical Error] line 0, col 406 near 'extendedProperty="xy"))': エラー: Class Models\Articles\BaseArticle には、location という名前のフィールドまたは関連付けがありません
質問は、親クラスへのクエリで子のプロパティにアクセスする方法ですか?