1

我正在尝试使用默认的 Symfony 序列化器将数据序列化为 JSON。
为此,我尝试@Groups()按照此处的说明使用:
https ://symfony.com/doc/current/serializer.html

添加@Groups注解后如下图:

class User implements UserInterface
{
    // ...
        /**
     * @ORM\OneToMany(targetEntity=PortfolioItem::class, mappedBy="user", orphanRemoval=true)
     * @ORM\OrderBy({"id" = "DESC"})
     * @Groups({"show_user"})
     */
    private $portfolioItems;
}

在我的控制器上,我有以下内容:

    /**
     * @param Request $request
     * @return JsonResponse
     * @Route("/async/portfolio/brands/get_chart", name="portfolio.brands.chart.data", options={"expose"=true}, methods={"POST", "GET"})
     * @IsGranted("ROLE_USER")
     */
    public function getDataForBrandsChart(Request $request): JsonResponse
    {
        $user = $this->getUser();
        $portfolioItems = $user->getPortfolioItems();
        $output = $this->serializer->serialize($portfolioItems, "json", ["groups" => "show_user"]);

        return new JsonResponse($output, 200);
    }

这总是给出以下输出:
[[]]
为什么它总是空的?

我使用组的原因是因为没有它们我有以下错误:

序列化类“App\Entity\PortfolioItem”的对象时检测到循环引用(配置限制:1)。

4

1 回答 1

5

问题是缓存。在安装和运行额外捆绑的作曲家后重新启动服务器bin/console cache:clear解决了这个问题。

于 2020-10-15T09:16:06.663 回答