一直在用这个挠头。我有一个 symfony 2 json api,它为一个 android 应用程序提供数据。
api 序列化数据并使用 JMSSerializerBundle 将其发送到应用程序,完全没有问题。然后我使用 GSON 反序列化为本机 java 对象。
然后我的应用程序进行更改并将数据发布回 api。
我的问题是,当我反序列化从应用程序发送的 json 并尝试对其进行持久化/合并时,会在数据库中为已经存在的实体创建新对象。symfony 2 可以判断一个对象是否是新的吗?我会认为如果它有一个带有记录的 ID,它就会知道它是要更新而不是创建的。
这是我的控制器代码:
public function postSuggestionAction()
{
$content = $this->get("request")->getContent();
if (!empty($content))
{
$serializer = $this->get('jms_serializer');
$suggestion = $serializer->deserialize($content, 'Calling\WebBundle\Entity\Suggestion', 'json');
$em = $this->getDoctrine()->getManager();
$em->persist($suggestion);
$em->merge($suggestion->getCategory());
$em->merge($suggestion->getNumber());
$em->merge($suggestion->getCaller());
$em->flush();
$view = $this->view(true, 200);
return $this->handleView($view);
}
$view = $this->view(false, 404);
return $this->handleView($view);
}
在此先感谢史蒂夫