【发布时间】:2018-03-12 13:05:37
【问题描述】:
我想使用 PATCH 方法更新我的实体中的值,但是当我尝试这样做时,学说会在表中创建新记录,但不更新。例如我想更新名称属性,所以我发送这个 JSON 数组(在 url 中我发送记录的 id:api.test/item/{id}):
{
"name": "newname"
}
我的控制器:
public function updateItemAction(Request $request, $id)
{
$serializer = $this->get('jms_serializer');
$content = $request->getContent();
$item = $serializer->deserialize($content,Item::class,'json');
$em = $this->getDoctrine()->getManager();
$em->getRepository(Item::class)->find($id);
$em->persist($item);
$em->flush();
return new View("updated!",Response::HTTP_OK);
}
【问题讨论】:
-
你能复制/粘贴 $item 结果(
$serializer->deserialize($content,Item::class,'json'))。你有setInitialized = false吗? -
这是什么版本的 Symfony?您也可以发布您的控制器方法注释吗?
-
@Gaylord.P var_dump 反序列化后的结果:
object(AppBundle\Entity\Item)#493 (4) { ["id":"AppBundle\Entity\Item":private]=> NULL ["name":"AppBundle\Entity\Item":private]=> string(9) "oldupdate" ["categories":protected]=> NULL ["attributes":protected]=> NULL } {"name":"oldupdate"} -
@ASOlivieri Symfony 3.4,方法:补丁
标签: symfony doctrine-orm controller sql-update patch