これで頭を悩ませています。Android アプリにデータを提供する symfony 2 json API があります。
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);
}
前もって感謝します スティーブ