删除实体而不删除其外键链接

Sir*_*ius 3 mysql sql orm symfony doctrine-orm

我有一个表Products,实体tva链接到表Tva,实体图像链接到表Media。我在奏鸣曲管理中呈现网站的所有产品。我希望能够从管理中删除产品。

我希望能够删除产品而不删除其外键链接。

但我有这个错误:

SQLSTATE[23000]:完整性约束冲突:1451 无法删除或更新父行:外键约束失败(fly. post、CONSTRAINT FK_5A8A6C8D4D79775FFOREIGN KEY ( tva_id) REFERENCES tva( 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 的产品。

Dar*_*hta 5

(onDelete="CASCADE")当父记录被删除时,子记录也会被删除。如果我们不想删除子记录那么我们需要配置onDelete="SET NULL"。这会将外键值设置为null子记录。