Sha*_*rop 5 json symfony doctrine-orm jms-serializer
我试图将json反序列化为实体,然后合并实体.
我相信我过去有这个工作,我会发送ID和我希望更新的任何字段.例如:
在我的DB中:
| id | first | last | city |
| 1 | Jimmy | James | Seattle |
Run Code Online (Sandbox Code Playgroud)
然后我将反序列化以下json并合并实体
$json = { "id" : 1, "city": "chicago"}
$customer = $serializer->deserialize($json, 'App\CustomerBundle\Entity\Customer', 'json');
$em->merge($customer);
Run Code Online (Sandbox Code Playgroud)
预期的结果将是:
| id | first | last | city |
| 1 | Jimmy | James | Chicago |
Run Code Online (Sandbox Code Playgroud)
但是我得到以下内容:
| id | first | last | city |
| 1 | null | null | Chicago |
Run Code Online (Sandbox Code Playgroud)
就像我说的,我相信我在某些时候有这个工作,我不确定这是否与jms_serializer
or有关em->merge
.
$customer->getFirst()
返回null实体合并之前和之后
小智 5
反序列化器将您的JSON字符串转换为对象,仅此而已.它将使用您序列化的属性.如果未设置属性,则它将保持为null(或类中指定的默认值).
merge方法还会将null属性保留到数据库.
为避免这种情况,请查看以下答案:如何从@Groups包含策略更新symfony2/doctrine实体JMSSerializer反序列化实体
持久化实体后,在实体上调用EntityManager :: refresh()方法应该加载缺少的属性.
还有关系:
归档时间: |
|
查看次数: |
5265 次 |
最近记录: |