根据the documentation和this 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;
答案 0 :(得分:0)
onDelete="CASCADE"
在拥有侧(inversedBy),而不是在反向侧(mappedBy)。