为什么学说拒绝我的外键约束?

时间:2016-11-11 02:32:25

标签: php mysql doctrine-orm

我试图在两个学说实体中的字段之间添加多对一关系。我有一个Facebook提要表,其中列出了Facebook提要及其相应的Facebook ID,我有一个FbPageLikes实体,这是一个表格,我随时间记录这些Facebook提要的喜欢数量的行。

我相信我已正确注释,但在尝试迁移时仍然会看到此错误:General error: 1215 Cannot add foreign key constraint

我的注释有问题吗?如何调试此学说迁移?

FbPageLikes实体:

 /**
 * @var $facebookId
 *
 * @ORM\ManyToOne(targetEntity="Feed", inversedBy="fbPageLikes")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="facebook_id", referencedColumnName="facebookId", onDelete="CASCADE")
 * })
 */
private $facebookId;

Feed实体:

/**
 * @var integer
 *
 * @ORM\Column(name="facebookId", type="bigint", nullable=true)
 */
private $facebookId;

/**
 * @var \Doctrine\Common\Collections\Collection
 *
 * @ORM\OneToMany(targetEntity="FbPageLikes", mappedBy="facebookId", fetch="EXTRA_LAZY")
 */
private $fbPageLikes;

1 个答案:

答案 0 :(得分:0)

此设置失败的原因是FbPageLikes实体上的注释。 referencedColumnName字段必须引用相应实体Feed中的主键。 http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/annotations-reference.html#annref-joincolumn

就我而言,我必须设置referencedColumnName来引用id实体的Feed列,而不是facebookId列。