У меня есть две сущности деятельности и 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;
}
Ваше решение приветствуется.
Просто удали cascade={"remove"}
от вашей сущности BulleManager.
cascade={"remove"}
удаляет все зависимые записи в дочерней таблице (действия), если запись удаляется в родительской таблице (BulleManager).
Теперь он установит bullemanager_id
в NULL
в таблице действий, если BulleManager удален.
И, не забудьте обновить схему вашей базы данных, используя:
php bin/console doctrine:schema:update
Других решений пока нет …