Доктрина установки идентификатора сущности позднее - PullRequest
0 голосов
/ 10 октября 2019

У меня есть приложение, в котором я хотел бы редактировать уже существующие сущности, но все изменения должны быть сделаны только после того, как пользователь явно нажмет «Сохранить». Поэтому, пока он редактирует, ничего не происходит с оригиналом.

Обычно, это не будет проблемой, но, поскольку я сохраняю изменения в Ajax, а не в Symfony, мне нужно это обойти.

Работает отлично, за исключением части, в которой предполагается записать идентификатор оригинальной сущности в отредактированную (оригинал удаляется при сохранении изменений).

Сначала я подумал, чтоЯ бы скопировал все поля из отредактированного объекта в оригинал, но, вероятно, после добавления полей никто не скажет приложению также скопировать эти поля.

Вот соответствующий код:

$editedEntity->setId($originalEntity->getId());

$em = $this->getDoctrine()->getManager();
$em->remove($originalEntity);
$em->flush();

Tl; dr

Как скопировать идентификатор объекта в другой?

1 Ответ

0 голосов
/ 10 октября 2019

Вы должны сохранить идентификатор, удалить и очистить старый, а затем установить идентификатор, сохраненный для вашего нового объекта.

$originalEntityId = $originalEntity->getId();

$em = $this->getDoctrine()->getManager();
$em->remove($originalEntity);
$em->flush();

$editedEntity->setId($originalEntityId);
$em->flush();

...