我正在尝试使用默认的Symfony Serializer将数据序列化为JSON
为此,我尝试使用@Groups()
,如下所述:
https://symfony.com/doc/current/serializer.html
添加@Groups
注释后,如下所示:
class User implements UserInterface
{
// ...
/**
* @ORMOneToMany(targetEntity=PortfolioItem::class, mappedBy="user", orphanRemoval=true)
* @ORMOrderBy({"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);
}
这总是给出以下输出:[[]]
为什么它总是空的?
我使用组的原因是,如果没有它们,我会出现以下错误:
在序列化类"的对象时检测到循环引用;应用程序\实体\投资组合项目"(配置限制:1(。
问题出在缓存上。在安装额外的bundle composer并运行bin/console cache:clear
后重新启动服务器解决了此问题。