@anton1x

Как правильно удалять при однонаправленном ManyToOne?

Всем привет, есть следующий кейс - имеется ентити Media из СонатаМедиаБандла и допустим ентити Foo, которое имеет поле $image и связь ManyToOne к Media. Дабы не прописывать все связи и в Media - связь однонаправленная, только со стороны Foo.
/**
     * @ORM\ManyToOne(targetEntity="App\Application\Sonata\MediaBundle\Entity\Media")
     * @ORM\JoinColumn(name="image_id", referencedColumnName="id", nullable=true)
     */
    private $image;


Проблема - при удалении какого нибудь Media объекта через SonataAdmin, и заходе в раздел редактирования для Foo получаю
"Entity of type 'App\Application\Sonata\MediaBundle\Entity\Media' for IDs id(7) was not found"
, что вполне логично так как связь однонаправленная, а удаление не со стороны владельца.

Собственно вопрос, как быть, чтобы проделывать подобное и персистентность не нарушалась? Возможно ли как то это решить только аннотациями для Foo? Пока единственное рабочее решение которое нашел для себя - повесить ивент листенер на pre/postRemove для Media в который передать список всех ентити связанных с ней и руками обнулить связь, но почему то не покидает чувство что я запилил дикий костыль.
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
@anton1x Автор вопроса
В общем вся мишура произошла из-за использования sqlite...
При переходе на mysql все стало корректно отрабатывать
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы