Я получаю данные XML с внешнего мыльного сервера, анализирую данные и создаю объект.Затем я хочу сохранить его в базе данных, но он не работает.
Идентификатор компании, я получаю из внешнего мыла и уникальное значение его строки, например 387sdfh899ohkadkfh8
.
Company
/**
* @ORM\Entity
*/
class Company
{
/**
* @ORM\Id()
* @ORM\GeneratedValue(strategy="NONE")
* @ORM\Column(type="string")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Address", mappedBy="company", orphanRemoval=true, cascade={"persist","remove"})
*/
private $addresses;
// ...
}
Адрес
/**
* @ORM\Entity
*/
class Address
{
// ...
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Company",inversedBy="adresses")
* @ORM\JoinColumn(nullable=false)
*/
private $company;
// ...
}
CompanyController
class CompanyController
{
// ...
$json = $serializer->serialize($data, 'json');
$obj = $serializer->deserialize($json, 'array<App\Entity\Company>', 'json');
// ...
}
Все выглядит так, как ожидалось.Объект был создан, включая два объекта Address.
Обновление - начало
Это структура, которую я получаю при десериализации
array:1 [
0 => Company {#524
-id: "0946346d06ffe3f551a80700c2a5c534"
// ..
-addresses: ArrayCollection {#538
-elements: array:2 [
0 => Address {#1017
-id: null
// ...
-company: null
}
1 => Address {#537
-id: null
// ..
-company: null
}
]
}
-status: "Active"
}
]
Обновление - конец
Нокогда я пытаюсь сохранить его в базе данных:
CompanyController
class CompanyController
{
// ...
$em= $this->getDoctrine()->getManager();
foreach ($obj as $o) $em->persist($o);
$em->flush();
// ...
}
Я получаю ошибку
вставка адреса невключить идентификатор компании.Для company_id задано значение null
Подобные данные json, включая адреса, соответствующие компании, которые я получу от клиента в формате json, анализируют их через FormType и сохраняют в базе данных, но я не могу управлятьс: /
Как правильно вставить эти связанные объекты?