Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 单表继承-鉴别器映射_Symfony_Doctrine Orm - Fatal编程技术网

Symfony 单表继承-鉴别器映射

Symfony 单表继承-鉴别器映射,symfony,doctrine-orm,Symfony,Doctrine Orm,我需要在我的课堂上做一个公式,因为我有很多课,我不能对每一个都加以区分 discr可以是类的名称 有可能吗?(带注释、xml或其他) 谢谢。看看这个链接,也许会对你有所帮助 我只是省略了DiscriminatorMap注释,并且条令自动使用chield的类名作为鉴别器: /** * @ORM\Entity() * @ORM\InheritanceType("JOINED") * @ORM\DiscriminatorColumn(name="type", type="string") */

我需要在我的课堂上做一个公式,因为我有很多课,我不能对每一个都加以区分

discr可以是类的名称

有可能吗?(带注释、xml或其他)


谢谢。

看看这个链接,也许会对你有所帮助


我只是省略了
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
{
    // ...
}