Akuma
@Akuma
Веб-программист

Как не создавать уже существующие сущности при десериализации объекта Doctrine2?

Добрый день,

Symfony2.3
ORM - Doctrine2
Сериализация - JMSSerializeBundle

Десериализую такой объект:
<entry>
    <title><![CDATA[Тестовый объект]]></title>
    <address_district>
      <id>1</id>
      <title><![CDATA[Западный Округ]]></title>
    </address_district>
</entry>


address_district - поле с отношением ManyToMany к сущности District.
District с ID=1 уже есть в БД, но при persist() доктрина заного создает этот вложенный объект и присваивает новый ID. Как можно этого избежать таким образом, чтобы использовался уже существующий объект?
  • Вопрос задан
  • 2520 просмотров
Решения вопроса 1
Akuma
@Akuma Автор вопроса
Веб-программист
Сам нашел решение :)

Вместо persist() на десериализованной сущности следует использовать merge().
Только учтите, что события вызываемые по persist() в этом случае не сработают.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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