Я пытаюсь десериализовать полезную нагрузку json в сущность, мне нужно, чтобы объекты внутри этого массива принадлежали родительскому объекту. Пример полезной нагрузки.
{
"exportOwner": "test@example.com",
"uniqueIdentifier": "BCD99340-70D9-4E23-91DD-C40DFB64EC9D",
"events": [
{
"uniqueIdentifier": "E09FDE82-4CAA-4641-87AF-6C092D6E71C1"
}
]
}
При отправке это конкретное событие либо существует (с использованием uniqueIdentifier), либо нет. Если это не так, я создаю это. Проблема в том, что родительский объект, который содержит этот массив, в основном владеет ими, поэтому существует отношение OneToMany
.
Поэтому мне нужно перебрать этот массив событий и вызвать setParentId()
для вновь созданного родителяобъект. Что, я полагаю, мне нужно где-то сделать в этом блоке кода.
$data = $request->getContent();
$entity = $serializer->deserialize($data, $this->type, 'json');
$entityManager = $this->getDoctrine()->getManager();
$repo = $this->getDoctrine()->getRepository($this->type);
// If it exists update it
if($existingEntity = $repo->findOneBy(
array(
"uniqueIdentifier" => $entity->getUniqueIdentifier()
)
)){
$entity->setId($existingEntity->getId());
$entityManager->merge($entity);
$entityManager->flush();
return $this->_200response($this->type." with uuid '".$existingEntity->getUniqueIdentifier()."' already exists. It has been updated");
}
// Create
$user = $this->getUserByEmail($entity->getExportOwner());
// $entity->setExportOwnerId($user->getId());
// $entity->setExportOwner(null);
$entityManager->persist($entity);
$entityManager->flush();
return $this->_200response($this->type." with uuid '".$entity->getUniqueIdentifier()."' created");
Однако выполнение $entity->getEvents()
возвращает пустой массив.
Отношение выглядит следующим образом:
// Animal.php
/**
* @var Event[]|null
*
* @ORM\OneToMany(targetEntity="Animal", mappedBy="animal")
*/
private $events;
------------------------------------------------------------------
// Event.php
/**
* @ORM\ManyToOne(targetEntity="Animal", inversedBy="metrics")
*/
private $animal;
Даже когда я отправляю полезную нагрузку, а затем получаю объект обратно, массив событий пуст, но событие существует.
Это работает на 100% нормально, если я использую аннотацию @ORM\JoinTable
с отношениями ManyToMany
, но мне это не нужно. У меня есть одно животное для многих событий.