【问题标题】:Doctrine Mapping 2 levels of inheritance教义映射2级继承
【发布时间】:2015-06-30 00:07:15
【问题描述】:

我为

定义了一个映射
/**
 * 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”。我错过了什么吗?

【问题讨论】:

  • 您的“objetetat”表中有“discrimin”列吗?
  • 是的,那里存在“discrimin”列,当我插入一个对象(候选人或员工)时,歧视的值取:候选人或员工。但我需要的是:discrimin 将采用值“identite”,并且在 Identite 表中,我想要一个名为 discr 的列,我将在其中拥有:candidat 或人员
  • 请问您对此有什么想法吗??

标签: php symfony orm doctrine-orm mapping


【解决方案1】:

您应该将@ORM\DiscriminatorColumn 和@ORM\DiscriminatorMap 注释放在超类上,而不是子类上

【讨论】:

  • 谢谢回复,但我在孩子身上也需要它,因为孩子有它的子类(候选人、顾问、员工.....)
猜你喜欢
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
  • 2015-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多