具有属性覆盖的类表继承

时间:2019-01-18 10:10:26

标签: orm doctrine class-table-inheritance

我有3张桌子

  • 单位
  • 组织扩展部门
  • 部分扩展单位

现在,我想将class-table-heritance与此原理一起使用。但是联接列的名称不同。单元表中的id列是uni_id,在组织中是org_id,在部分中是sec_id。

我已尝试通过https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html中所述的Association-override和attribute-override解决此问题。

该属性替代似乎将父代的ID重命名为子代,这不是我想要的。因此,我认为我应该应用Association-override,但是它不起作用。

/**
 *
 * @ORM\Entity
 * @ORM\Table(name="unit")
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="uni_type_cd", type="string")
 * @ORM\DiscriminatorMap({"organisation" = "Organisation", "section" = "Section"})
 */
abstract class Unit {
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(name="uni_id")
     * @var int
     */
    protected $id;


/**
 *
 * @ORM\Entity
 * @ORM\Table(name="organisation")
 */
class Organisation extends Unit {

}

我还试图将其添加到组织中

    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(name="org_id")
     * @var int
     */
    protected $id;

我正尝试使用AssociationOverride

/**
 *
 * @ORM\Entity
 * @ORM\Table(name="organisation")
 * @ORM\AssociationOverrides({
 *      @ORM\AssociationOverride(name="id",
 *          joinColumns=@ORM\JoinColumn(
 *              name="org_id", referencedColumnName="uni_id"
 *          )
 *      )
 * })
 *
 */
class Organisation extends Unit {

在最后的代码片段中,我使用了各种@ORM \ AssociationOverride(name =

像id,id,uni_id一样,但我不断收到类似的错误:MappingException:类Organisation的无效字段重写名为“ id”。

我希望能够从存储库中获取所需的组织或部门。并将这些表加入扩展表。

0 个答案:

没有答案