Учение Symfony удалить сущность с отношениями OneToMany — ManyToOne

У меня есть две сущности деятельности и 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;
}

Ваше решение приветствуется.

1

Решение

Просто удали cascade={"remove"} от вашей сущности BulleManager.

cascade={"remove"} удаляет все зависимые записи в дочерней таблице (действия), если запись удаляется в родительской таблице (BulleManager).

Теперь он установит bullemanager_id в NULL в таблице действий, если BulleManager удален.

И, не забудьте обновить схему вашей базы данных, используя:

php bin/console doctrine:schema:update
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]