这是我的代码
$dql = '
SELECT p , h ,t ,m
FROM App:Post p
LEFT JOIN p.mentions m
LEFT JOIN p.tags t
LEFT JOIN p.file h
WHERE p.user
IN (
SELECT f FROM App:User u
JOIN u.followers f
WHERE u.id = :uid
)
OR p.user = :uid ';
$query = $this->getEntityManager()
->createquery($dql)
->setMaxResults(1)
->setParameters(['uid' => $user->getId()]);
$paginator = new Paginator($query, $fetchJoinCollection = true);
但问题是循环引用,例如,Post – >标签 – >用于序列化并使项目冻结并显示空白页面的帖子.
我如何处理除了使用循环外观PersistentCollection
更新::
这是我的seriallizer代码
$posts= [];
foreach ($paginator as $post) {
$posts[] = $post;
}
$serializer = SerializerBuilder::create()->build();
$gifts = $serializer->toArray($posts);
解决方法:
您可以使用序列化组来避免循环引用问题.基本上,这允许您为每个属性定义一个组(或多个组),然后您只能要求特定的(s)组被序列化.
对于symfony本机序列化程序:
> http://symfony.com/doc/current/serializer.html#using-serialization-groups-annotations
> https://symfony.com/blog/new-in-symfony-2-7-serialization-groups
对于JMS:https://jmsyst.com/libs/serializer/master/cookbook/exclusion_strategies