Я получаю следующие данные json от клиента. JSON содержит информацию о родительских и дочерних элементах, как показано ниже -
{
id : 1,
name : "Parent"
children : [
{ id : 1, name : "A" },
{ id : 2, name : "B" }
]
}
Я сопоставляю эти данные JSON с Родителем и Дочерним Объектом.
Родитель
class Parent{
/** @Id @Column(type="integer",name="order_no") @GeneratedValue * */
protected $id;
/**
* @OneToMany(targetEntity="Child",cascade={"merge"}, mappedBy="parent" )
*/
protected $children;
}
Child
class SalesOrderDetail extends BaseEntity {
/** @Id @Column(type="integer") @GeneratedValue * */
protected $id;
/**
* @ManyToOne(targetEntity="parent")
* @JoinColumn(name="parent_id")
*/
protected $salesOrder;
}
Пока все хорошо.
Теперь проблема в том, когда я пытаюсь объединить родительский элемент
$em->merge($parent)
Я получаю следующую ошибку. Примечание. Весь родительский и дочерний объекты являются неуправляемыми, поэтому я пытаюсь объединить их. Если я просто объединяю parent, он работает, но находит ошибку, если я пытаюсь сохранить все содержимое parent и его потомков.
Тип: Doctrine \ ORM \ ORMInvalidArgumentException Сообщение: несколько
непостоянные новые объекты были найдены через данную ассоциацию
график: * Новая связь была найдена через отношения
'Ziletech \ Database \ Entity \ Parent # itemSet', который не был настроен на
Каскадное сохранение операций для объекта:
Ziletech \ Database \ Entity \ Child @ 0000000052218380000000007058b4a6. к
решить эту проблему: либо явно вызовите EntityManager # persist () на
этот неизвестный объект или настроить каскад сохраняют эту связь в
отображение, например, @ManyToOne (.., cascade = {"persist"}). если ты
не может выяснить, какой объект вызывает проблему реализовать
'Ziletech \ Database \ Entity \ Child #__ toString ()', чтобы получить подсказку. * Новый
сущность была найдена через отношения
'Ziletech \ Database \ Entity \ Parent # itemSet', который не был настроен на
Каскадное сохранение операций для объекта:
Ziletech \ Database \ Entity \ Child @ 0000000052218071000000007058b4a6. к
решить эту проблему: либо явно вызовите EntityManager # persist () на
этот неизвестный объект или настроить каскад сохраняют эту связь в
отображение, например, @ManyToOne (.., cascade = {"persist"}). если ты
не может выяснить, какой объект вызывает проблему реализовать
'Ziletech \ Database \ Entity \ Child #__ toString ()', чтобы получить подсказку.