У меня есть следующая иерархия классов:
/**
* @Entity
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"root" = "RootCategory", "sub" = "SubCategory"})
*/
class Category
{
/**
* @Id @Column(type="integer") @GeneratedValue
*/
protected $id;
}
/**
* @Entity
*/
class RootCategory extends Category
{
}
/**
* @Entity
*/
class SubCategory extends Category
{
/**
* @ManyToOne(targetEntity="RootCategory")
* @JoinColumn(name="parentId", referencedColumnName="id")
*/
protected $parent;
}
В этой модели предметной области у нас есть только два возможных уровня в иерархии, отсюда и различие как RootCategory
или SubCategory
.
Я считаю излишним указывать явный столбец дискриминатора , где мы могли бы просто использовать простое правило в качестве дискриминатора:
- Если
parentId
равно ноль , то это RootCategory
- Если
parentId
равно не равно нулю , то это SubCategory
Можно ли с помощью Doctrine 2 использовать в качестве дискриминатора статус NULL для столбца?