【发布时间】:2021-02-19 16:09:33
【问题描述】:
在我的 Symfony 5 应用程序中,我有一个实体类 Product,它有两个属性 $categories 和 $bundles。产品类与这两个属性都具有多对多关系。当我注释掉任一属性时,产品序列化工作完美。但如果这两个属性都存在,则序列化超时。
产品类的代码摘录。
class Product
{
/**
* @ORM\ManyToMany(targetEntity=ProductBundle::class, mappedBy="products")
*/
private $productBundles;
/**
* @ORM\ManyToMany(targetEntity=Category::class, mappedBy="products")
* @MaxDepth(1)
*/
private $categories;
}
序列化代码如下。
$products = $productRepository->findBySearchQuery($name);
$productsJson = $serializerInterface->serialize($products, 'json', [
ObjectNormalizer::CIRCULAR_REFERENCE_HANDLER => function ($object) {
return $object->getId();
}
]);
我已经尝试使用在其他一些 Stackoverflow 答案和 @MaxDepth 上建议的 @ORM/JoinTable 注释,但没有运气。如果任何属性被注释掉,代码就可以工作。非常感谢您对此提供任何建议。
【问题讨论】:
-
不知道您是否尝试过...但是...“仅当序列化程序上下文的 AbstractObjectNormalizer::ENABLE_MAX_DEPTH 键设置为 true 时才进行检查。”来源:symfony.com/doc/current/components/… ...我会说您正在尝试序列化“太多”(内存/运行时量)并且可能正在导出整个产品数据库? ^^
-
@Jakumi 我的数据库中只有 20 个产品,所以我认为可以序列化,深度部分也没有帮助,但感谢您指出。但是,当我只返回产品名称时,它就开始起作用了。迷茫...
标签: symfony serialization orm