我需要在课堂上为DiscriminatorMap制作一个公式,因为我有很多课程,而且我不能区分每一个。
歧视可以是班级的名称。
有可能吗? (带注释,xml或其他)
/**
* @ORM\Entity
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({"MidUpperArmCircumference" = MidUpperArmCircumference", "KneeHeight" = "KneeHeight"})
*/
感谢。
答案 0 :(得分:6)
看看这个链接也许它会帮助你。
答案 1 :(得分:2)
我只是遗漏了DiscriminatorMap
注释,而且Doctrine自动使用chield的类名作为鉴别器:
/**
* @ORM\Entity()
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="type", type="string")
*/
abstract class AbstractContent
{
/**
* @var integer
*
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
}
/**
* @ORM\Entity()
*/
class Page extends AbstractContent
{
}
现在,当我创建新的Page()
条款时,AbstractContent
和Page
会向AbstractContent
创建一个FK,并设置AbstractContent
的{ {1}}属性为type
。
这是完美的,因为它允许您生成尽可能多的子类,即使在其他Bundles中没有您的超类(在我的情况下page
)需要了解它们。
但请记住,到目前为止,这还没有正式记录。使用Doctrine ORM 2.3进行测试。
答案 2 :(得分:0)
这是一个老问题。 Doctrine很好地支持单表继承。 以下示例来自official docs
<tr><td colspan="2"><textarea style="width: 100%;" /></td> </tr>
详细了解here