教义onDelete =“ CASCADE”无法与joinColumn一起使用

时间:2018-10-12 17:12:08

标签: php symfony doctrine symfony4

根据the documentationthis post,我只需要在@ORM \ JoinColumn中指定onDelete =“ CASCADE”,它应该使外键在删除时级联。我做到了。

/**
 * @ORM\OneToMany(targetEntity="OrderDates", mappedBy="order", cascade={"persist", "remove"}, orphanRemoval=TRUE)
 * @ORM\JoinColumn(name="order_id", referencedColumnName="id", onDelete="CASCADE")
 */
private $dates;

但是,当我进行迁移时,它生成的FK不会在删除时级联。

ALTER TABLE order_dates ADD CONSTRAINT FK_28EABDE38D9F6D38 FOREIGN KEY (order_id) REFERENCES orders (id)

我也尝试删除, cascade={"persist", "remove"}, orphanRemoval=TRUE部分,但无济于事。

编辑: 我也尝试过将其设置为反面,但它也不起作用(实际上,在执行此操作时根本没有外键):

/**
 * @ORM\ManyToOne(targetEntity="Orders", inversedBy="dates", cascade={"persist"})
 * @ORM\JoinColumn(name="order_id", referencedColumnName="id", onDelete="CASCADE")
 */
private $order;

1 个答案:

答案 0 :(得分:0)

onDelete="CASCADE"在拥有侧(inversedBy),而不是在反向侧(mappedBy)。