Php 学说映射2个继承层次

Php 学说映射2个继承层次,php,symfony,orm,doctrine-orm,mapping,Php,Symfony,Orm,Doctrine Orm,Mapping,我为它定义了一个映射 /** * Identite entity * @ORM\Entity * @ORM\Table(name="identite") * @ORM\InheritanceType("JOINED") * @ORM\DiscriminatorColumn(name="discr", type="string") * @ORM\DiscriminatorMap({"identite" = "Identite","candidat" = "Candidat","cons

我为它定义了一个映射

/**
 * Identite entity
 * @ORM\Entity
 * @ORM\Table(name="identite")
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="discr", type="string")
 * @ORM\DiscriminatorMap({"identite" = "Identite","candidat" = "Candidat","consultant"="Consultant","staff"="Staff" })
 */
class Identite extends ObjetEtat{


    /**
     * @var integer
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id; 
    /**
     * @var string
     *
     * @ORM\Column(name="nomidentite", type="string", length=200, nullable=true)
     */
    private $nomidentite;}
我有超类的映射:

/**
 * Identite entity
 * @ORM\Entity
 * @ORM\Table(name="objetetat")
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="discrimin", type="string")
 * @ORM\DiscriminatorMap({"objetetat" = "ObjetEtat","identite" = "Sigmatis\SigBundle\Entity\Identites\Identite" })
 */

class ObjetEtat {
    //put your code here

        /**
     * @var integer
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id; }
这是我层次结构的第三层:

/**
 * Candidat entity
 * @ORM\Entity
 * @ORM\Table(name="candidat")

 */

class Candidat extends Identite {
}

更新模式后:我找不到表Identite的字段“discr”。我错过了什么吗

你应该把
@ORM\DiscriminatorColumn
@ORM\DiscriminatorMap
注释放在超类上,而不是子类上的注释

Thnx作为回复,但是我也需要它在子类中,因为子类有它的子类(候选、顾问、职员……)你的“对象”中有“discrimin”列吗表?是的,列“discrimin”存在,当我插入一个对象(Candidate或Staff)时,discrimin的值为:Candidate或Staff。但我需要的是:discrimin将取值“identite”,在表identite中,我想有一个名为discr的列,其中有:candidate,或staff,请问您对此有何想法??