我在帖子和用户之间有ManyToOne关系:
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User\User")
*/
private $author;
在我从我的端点获得响应后,如下所示:
array:2 [
"message" => "OK"
"data" => array:1 [
0 => Post {#6077
-id: 1
-title: "sda"
-teaser: "asdj"
-content: "asd"
-createdDateTime: DateTime @1517078058 {#6075
date: 2018-01-27 18:34:18.0 UTC (+00:00)
}
-deletedDateTime: null
-author: User {#6294
+__isInitialized__: false
-id: 1
-firstName: null
-lastName: null
-email: null
-activationCode: null
-isActive: null
-createdDateTime: null
-deletedDateTime: null
…2
}
-statusId: false
}
]
]
我正在尝试将其序列化为JSON。以前(Symfony 3)有一个关于循环引用的问题,我设法解决了这个问题,但这有点不同。
我一直收到500个响应,异常:
NotNormalizableValueException
An unexpected value could not be normalized: NULL
如果我删除实体之间的关系,那就没问题了,所以这显然就是问题所在。
它将相关对象视为无法规范化的对象。出于某种原因。不知道为什么会这样。在文档里没有找到任何关于这个的东西。
我遗漏了什么吗?
发布于 2018-02-02 20:25:22
我想我已经解决了我的问题。我访问了:
/vendor/symfony/serializer/Serializer.php
经过很少的调查,我发现normalizer在PHP资源上失败了。
原来我的用户表中有一个VARBINARY类型的字段。根据doctrine documentation的说法,该类型被转换为PHP资源。
结论: Symfony序列化在序列化实体和相关子实体方面没有任何问题。它根本不能标准化数据的资源类型。
我认为这是值得记住的事情。
发布于 2018-01-28 02:03:06
我需要更多的信息来帮助你。你用的是哪种串行化程序,Symfony?如何加载序列化程序?无论是什么,错误是显而易见的:您正在使用的序列化程序的规范化程序在发现空字段时不知道该如何处理。我的猜测是,正如Symfony序列化程序官方文档中所示,您只将一个规范化程序(大约5个可用的)加载到序列化程序中。
https://stackoverflow.com/questions/48480395
复制相似问题