我正在尝试序列化然后反序列化Symfony 3中的Doctrine实体。当然,它对id
属性不起作用,因为默认情况下没有id
的公共访问者。那么最好的选择是什么?
添加setId()
方法,但这可能是一个坏主意
破坏了学说的默认行为。
使用使用反射构建的自定义Normalizer
通过访问该字段来对象。
为实体提供一些自定义toArray()
,fromArray()
功能,并使用数组值代替序列化中的对象。
或者我错过了什么?是否已经为symfony构建了该用例?
答案 0 :(得分:0)
This可能是您正在寻找的内容?我最近开始研究它。
答案 1 :(得分:0)
您可以使用object_to_populate
选项:
// retrieve entity to update from DB
$oldProduct = $this->getDoctrine()->getRepository(Product::class)->find($request->request->get('id'));
$product = $this->get('serializer')->deserialize($request->getContent(), Product::class, 'json', array('object_to_populate' => $oldProduct));
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($product);
$entityManager->flush();