1

我有两个实体活动和 BulleManager。我使用 OneToMany - ManyToOne 来表示它们之间的关系。问题是当我删除 BulleManager 实体中的一行时,Activity 实体中的相关行也被删除,这不是我喜欢的行为。当拥有方(BulleManager)实体被删除时,我只想将“NULL”设置为反转方实体(活动)。

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;
}

欢迎您的解决方案。

4

1 回答 1

2

只需cascade={"remove"}从 BulleManager 实体中删除。

cascade={"remove"}如果父表 (BulleManager) 中的记录被删除,则删除子表 (活动) 中的所有相关记录。

现在,如果 BulleManager 被删除,它将在活动表中设置bullemanager_idNULL

而且,不要忘记使用以下方法更新您的数据库架构:

php bin/console doctrine:schema:update
于 2017-12-27T10:57:31.877 回答