我有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”。
我希望能够从存储库中获取所需的组织或部门。并将这些表加入扩展表。