这似乎应该是一个简单的问题,但我似乎无法解决它。
我有两个实体,人和标志。Flag 与 Person 具有多对一关系。我遇到的问题是 Person 的 id 字段是 bigint,而不是 int 类型。
因此,在 Flag 实体的 ManyToOne 字段上使用这样的语法:
/**
* @ORM\ManyToOne(targetEntity="Person", inversedBy="flags")
* @ORM\JoinColumn(name="personId", referencedColumnName="id")
*/
protected $person;
我收到外键错误,类似于
An exception occurred while executing 'ALTER TABLE flags ADD CONSTRAINT FK_B0541BAA20C4B1C FOREIGN KEY
我相信除了生成此错误之外,我已经用尽了此错误的所有其他可能性,因为 personId 字段是整数,而人员的 ID 字段是 bigint。这些外键关系在此捆绑包中的其他实体中运行良好,只有 Person 及其 bigint 主键会导致问题。
我无法将 type="bigint" 添加到 JoinColumn 而不会出现如下错误:
The annotation @ORM\JoinColumn declared on property Acme\AcmeBundle\Entity\PersonFlag::$person does not have a pro
perty named "type"
而且,如果我添加 Column 注释以声明类型,它只会忽略 JoinColumn,如下所示:
/**
* @ORM\ManyToOne(targetEntity="Person", inversedBy="flags")
* @ORM\JoinColumn(name="personId", referencedColumnName="id")
* @ORM\Column(type="bigint")
*/
protected $person;
这不会产生任何错误,但会创建一个名为“person”且没有外键的列。
那么,我错过了什么,我该如何将这个 ManyToOne 关系添加到一个以 bigint 作为主键的实体?
这是 Person 实体的 ID 字段的注释:
/**
* @ORM\Id
* @ORM\Column(type="bigint")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
泰!