Symfony API平台序列化程序maxDepth不工作

t3psigkw  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(140)

我正在使用的Symfony API平台应用程序有许多实体与自我有关系,它们递归地请求这些关系,然后可能超出内存并崩溃。
我确实在SO上找到了this question,但没有结论性的解决方案。
为了限制循环的深度,我做了以下文档:
/config/软件包/框架

framework:
     serializer:
        default_context: 
          enable_max_depth: true

我不确定上面的代码是否真的被应用了,因为它似乎接受default_context下的任何内容。但是当我运行php bin/console debug:config framework时,它确实正确地显示了。
上面的文档说明enable_max_depth需要设置为true,但不清楚在哪里/如何更改。
/src/实体/部门层次结构

use Symfony\Component\Serializer\Annotation\MaxDepth;

 #[
    ORM\ManyToOne(targetEntity: self::class),
    Groups(['sectorHierarchy:post', 'sectorHierarchy:get', 'sectorHierarchy:patch']),
    MaxDepth(1)
]
private ?self $parent = null;
sxpgvts3

sxpgvts31#

问题是在哪里将enable_max_depth设置为true。
因此,上面我放在/config/packages/framework上的代码不适用。
相反,应将以下内容添加到normalization_context

'get' => [
            'normalization_context' => [
                'groups' => ['sectorHierarchy:get'],
                'enable_max_depth' => true,
            ]
        ]

相关问题