我有两个实体活动和BulleManager。我使用OneToMany - ManyToOne来表示它们之间的关系。问题是,当我删除BulleManager实体中的一行时,“活动”实体中的相关行也会被删除,这不是我喜欢的行为。我只想设置" NULL"删除拥有方(BulleManager)实体时的反向边实体(活动)。
class Activities
{
/**
* @ORM\ManyToOne(targetEntity="BulleManager",
cascade={"persist"}, inversedBy="activities")
* @ORM\JoinColumn(name="bulle_manager_id",
referencedColumnName="id", nullable=true, onDelete="SET NULL")
*/
protected $bulleManager;
...
}
class BulleManager
{
/**
* @ORM\OneToMany(targetEntity="Activities",
mappedBy="bulleManager", cascade={"remove"})
*/
private $activities;
}
欢迎您的解决方案。
答案 0 :(得分:2)
只需从BulleManager实体中删除cascade={"remove"}
即可。
cascade={"remove"}
将删除子表(活动)中的所有相关记录。
现在,如果删除BulleManager,它会在活动表中将bullemanager_id
设置为NULL
。
并且,不要忘记使用以下命令更新数据库架构:
php bin/console doctrine:schema:update