【问题标题】:Symfony Serializer: Deserialize with relationSymfony 序列化器:反序列化与关系
【发布时间】:2021-11-11 21:30:26
【问题描述】:

我测试序列化程序组件并尝试执行以下操作。

我有一个 Article 实体:

class Article
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=50)
     */
    private $title;

    /**
     * @ORM\Column(type="text")
     */
    private $content;

    /**
     * @ORM\OneToMany(targetEntity=Comment::class, mappedBy="article", orphanRemoval=true, cascade={"persist"})
     */
    private $comments;

//getter/setter...

和一个评论实体:

class Comment
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=50)
     */
    private $title;

    /**
     * @ORM\Column(type="text")
     */
    private $content;

    /**
     * @ORM\ManyToOne(targetEntity=Article::class, inversedBy="comments", cascade={ "persist" })
     * @ORM\JoinColumn(nullable=false)
     */
    private $article;

//getter/setter...

当一个 json 发送到控制器时:

{
    "title": "My comment",
    "content": "This is a comment",
    "article": {
        "id": 1
    }
}
  • id 为1 的文章存在

我想反序列化与 Article 的关系:

 #[Route('', name: "comment_create", methods: ['POST'])]
    public function create(Request $request): JsonResponse 
    {
        $comment = $this->serializer->deserialize($request->getContent(), Comment::class, 'json');
//        $this->entityManager->persist($comment);
//        $this->entityManager->flush();
        return $this->json($comment, Response::HTTP_CREATED);
    }

但文章没有链接。

{"id":null,"title":"My comment","content":"This is a comment","article":{"id":null,"title":null,"content":null,"comments":[]}}

我的错误在哪里? symfony 序列化器能做到这一点吗?

【问题讨论】:

标签: php symfony serialization


【解决方案1】:

尝试使用以下反序列化:

$comment = $this->serializer->deserialize($request->getContent(), 'App\Entity\Comment', 'json');

【讨论】:

  • 欢迎来到 SO。感谢您的贡献。请注意,“仅代码”答案被接受,但通常不鼓励。考虑editing 您的帖子,以添加关于您的代码如何/为何解决 OP 问题的解释。有时,文档链接也可以提供帮助。高质量的答案可以帮助访问者学习一些他们可以用来解决他们自己的编码问题的东西,因此随着时间的推移,他们往往会收到更多的支持。解释总体上可以帮助更多的人,并且往往是最受赞赏的。期待更多的贡献。编码愉快。
猜你喜欢
  • 2016-10-11
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
  • 1970-01-01
  • 2021-05-05
  • 2011-06-25
  • 2020-05-25
  • 2020-03-24
相关资源
最近更新 更多