php - JMSSerializerBundle,反序列化后持久化没有关系

标签 php symfony doctrine deserialization jmsserializerbundle

反序列化过程OneToMany-ManyToOne过程总是获取关系数据集NULL。

结果实体:

@ORM\OneToMany(targetEntity="\Acme\DemoBundle\Entity\AnswerContent", mappedBy="answerResult", cascade={"persist", "remove"}, orphanRemoval=true)
@JMS\Type("ArrayCollection<Acme\DemoBundle\Entity\AnswerContent>")
@JMS\Groups({"survey_answer_fetching"}) 

答案实体:

 @ORM\ManyToOne(targetEntity="Acme\DemoBundle\Entity\AnswerResult", inversedBy="answers")
 @ORM\JoinColumn(name="answer_result_id", referencedColumnName="id")
 @JMS\Type("Acme\DemoBundle\Entity\AnswerResult")

这是 json:

{"results":
[{"answers":[
{"choices":[{"fieldId":1}],"value":"","questionId":45}, 
{"choices":[{"fieldId":1}],"value":"","questionId":67}],
"someId":9
}],
"personId":18}


$serializer = $this->get('jms_serializer');
$data = $serializer->deserialize($json['json'], 'Acme\\DemoBundle\\Entity\\AnswerResult', 'json');

反序列化过程正在分配这个值...

一切都很好,所有 json 变量都设置了正确的实体属性。

$em->persist($data);
$em->flush();

值传递到数据库,但关系不是... JMSSerializationBundle 的所有文档。所有 JMS 类型均已定义...

但是 DB/Doctrine 没有映射关系...

最佳答案

我用 merge() 函数解决了同样的问题:

$entity = $em->merge($data);
$em->persist($entity);
$em->flush();

关于php - JMSSerializerBundle,反序列化后持久化没有关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30650132/

相关文章:

php - Symfony 和 Doctrine DQL 查询生成器 : how to use multiple setParameters inside if condition checks?

CodeIgniter + Doctrine : CRUD in Controller?

php - 如何获取 Woocommerce 变体 ID?

php - 从 Laravel 中的 mysql 表中检索值

php - Symfony2 将父实体 ID 设置为关系表

Symfony2 如何使用编码密码(不是为了安全)

php - 如何使用 Doctrine QueryBuilder 或 EntityManager 通过多对多相关实体查找实体

php in 子句不适用于准备好的语句

windows - Selenium 服务器 : Unexpected status SERVICE_PAUSED

php - 没有在symfony中获得authenticationUtils的auth错误