Symfony 单表继承-鉴别器映射
我需要在我的课堂上做一个公式,因为我有很多课,我不能对每一个都加以区分 discr可以是类的名称 有可能吗?(带注释、xml或其他)Symfony 单表继承-鉴别器映射,symfony,doctrine-orm,Symfony,Doctrine Orm,我需要在我的课堂上做一个公式,因为我有很多课,我不能对每一个都加以区分 discr可以是类的名称 有可能吗?(带注释、xml或其他) 谢谢。看看这个链接,也许会对你有所帮助 我只是省略了DiscriminatorMap注释,并且条令自动使用chield的类名作为鉴别器: /** * @ORM\Entity() * @ORM\InheritanceType("JOINED") * @ORM\DiscriminatorColumn(name="type", type="string") */
谢谢。看看这个链接,也许会对你有所帮助
我只是省略了
DiscriminatorMap
注释,并且条令自动使用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
的type
属性设置为Page
这非常完美,因为它让您可以生成任意多的子类,即使在其他包中,您也不需要知道超类(在我的例子中是AbstractContent
)
但请记住,到目前为止,这还没有正式记录。用ORM 2.3进行测试。这是一个老问题。条令很好地支持单表继承。 下面的示例来自
不要认为有自动映射它的方法,抱歉=/所以我会区分所有的。谢谢这与所描述的不同。它还会在子类上生成重复的字段tables@CarrieKendall你能为我提供你的课程吗,因为这在我们的项目中仍然可以很好地工作。链接是可用的
/**
* @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
{
}
<?php
namespace MyProject\Model;
/**
* @Entity
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"person" = "Person", "employee" = "Employee"})
*/
class Person
{
// ...
}
/**
* @Entity
*/
class Employee extends Person
{
// ...
}