这是我的代码
$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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。