Sir*_*ius 3 mysql sql orm symfony doctrine-orm
我有一个表Products,实体tva链接到表Tva,实体图像链接到表Media。我在奏鸣曲管理中呈现网站的所有产品。我希望能够从管理中删除产品。
我希望能够删除产品而不删除其外键链接。
但我有这个错误:
SQLSTATE[23000]:完整性约束冲突:1451 无法删除或更新父行:外键约束失败(
fly
.post
、CONSTRAINTFK_5A8A6C8D4D79775F
FOREIGN KEY (tva_id
) REFERENCEStva
(id
))
这是我的实体电视和图像
/**
* @ORM\ManyToOne(targetEntity="FLY\BookingsBundle\Entity\Tva", cascade={"persist", "remove"})
* @ORM\JoinColumn(nullable=true)
*/
private $tva;
/**
* @ORM\ManyToOne(targetEntity="FLY\BookingsBundle\Entity\Media", cascade={"persist","remove"})
* @ORM\JoinColumn(nullable=true)
*/
private $image;
Run Code Online (Sandbox Code Playgroud)
我决定将连接列从这个更改为这个, * @ORM\JoinColumn(nullable=true)
它* @ORM\JoinColumn(onDelete="CASCADE")
可以工作,我可以删除该产品,但它也删除外键,我不希望这样,因为我有其他使用相同图像和 tva 的产品。
(onDelete="CASCADE")
当父记录被删除时,子记录也会被删除。如果我们不想删除子记录那么我们需要配置onDelete="SET NULL"
。这会将外键值设置为null
子记录。