首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ManyToOne关系中的对称-循环参考误差

ManyToOne关系中的对称-循环参考误差
EN

Stack Overflow用户
提问于 2021-05-15 09:05:56
回答 1查看 802关注 0票数 0

我正在使用Symfony 5和教义。我有两个具有ManyToOne关系的实体(ProductProductImage)。每个产品可以有多个图像,并且产品实体有getProductImages()方法来获取其产品图像。

但是当我在控制器响应中使用此方法时,如下所示:

代码语言:javascript
复制
return $this->json($product->getProductImages());

我得到以下错误:

代码语言:javascript
复制
A circular reference has been detected when serializing the object of class "App\Entity\Product"

你知道我该怎么解决吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-15 16:14:10

$this->json()使用序列化程序将ProductImage转换为json。当序列化程序试图序列化ProductImage时,它会找到对其产品的引用,并尝试序列化该引用。然后,当它序列化产品时,它会找到对ProductImage的引用,这会导致错误。

如果不需要json中的产品信息,则解决方案是定义序列化组并跳过导致错误的property的序列化。

向ProductImage类添加一个use语句:

use Symfony\Component\Serializer\Annotation\Groups;

将组添加到要序列化的属性,但跳过property:

代码语言:javascript
复制
/**
 * @Groups("main")
 */
private $id;

/**
 * @Groups("main")
 */
private $filename;

在控制器中指定要在$this->json()中使用的组

代码语言:javascript
复制
    return $this->json(
        $product->getProductImages(),
        200,
        [],
        [
            'groups' => ['main']
        ]
    );
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67545029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档