[Symfony2]: Каскадное удаление элемента объекта Как получить атрибут жизненного цикла

Я использую Symfony 2.7 в качестве CMF.

У меня есть 2 пользователя сущности и Mission . миссии имеют атрибут жизненного цикла (createdBy,updatedBy).

когда я пытаюсь удалить пользователя, я получаю эту ошибку:

SQLSTATE [23000]: нарушение ограничения целостности: 1451 Невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не работает (XXXX.mission, CONSTRAINT FK_19653DBD16FE72E1 FOREIGN KEY (updated_by) REFERENCES fos_user_user (id))

это элемент моего жизненного цикла в миссии сущности:

   /**
 * @ORM\ManyToOne(targetEntity="Application\Sonata\UserBundle\Entity\User")
 * @ORM\JoinColumn(name="created_by", referencedColumnName="id" , onDelete="CASCADE")
 */
private $createdBy;

/**
 * @ORM\ManyToOne(targetEntity="Application\Sonata\UserBundle\Entity\User")
 * @ORM\JoinColumn(name="updated_by", referencedColumnName="id" , onDelete="CASCADE")
 */
private $updatedBy;

Спасибо за помощь.


person toufik medhaffar    schedule 04.07.2017    source источник
comment
Вы хотите удалить миссии, когда пользователь удаляет или установить для него значение null?   -  person Sylvain Attoumani    schedule 04.07.2017
comment
я хочу удалить миссию   -  person toufik medhaffar    schedule 04.07.2017


Ответы (2)


Поместите это в отношение доктрины на стороне пользователя, например:

* @ORM\OneToMany(targetEntity="your\entity\mission", cascade={"delete"})

РЕДАКТИРОВАТЬ :

Если вы не можете получить доступ к пользовательскому объекту (не понимаю, почему вы не можете ...), вы можете сделать что-то немного уродливое, например, привязать миссию к пользователю, удалить его, а затем удалить пользователя.

person t-n-y    schedule 04.07.2017
comment
проблема в том, что у меня так много объектов с жизненным циклом, и я не могу иметь эту аннотацию в пользовательском объекте - person toufik medhaffar; 04.07.2017

В вашей пользовательской сущности: @ORM\OneToMany(targetEntity="xx",mappedBy="mission_id",cascade={"persist"})

В вашей миссии:

@ORM\ManyToOne(targetEntity="Application\Sonata\UserBundle\Entity\User")
@ORM\JoinColumn(name="created_by", referencedColumnName="id" , 
onDelete="CASCADE")
person Sylvain Attoumani    schedule 04.07.2017
comment
у меня нет аннотации внутри пользовательского объекта - person toufik medhaffar; 04.07.2017