모바일 사용자가 REST 서비스를 통해 "주택"을 만들고 업데이트 할 수있게 해주는 Symfony2 앱을 작성 중입니다. MongoDB를 저장 계층으로 사용하고 Doctrine MongoDB ODM을 사용하여 문서 처리를 수행합니다.Doctrine Mongo ODM이 외부에서 수정 한 데이터와 합치기
GET /homes/{key}
및 POST /homes
방법이 정상적으로 작동합니다. 문제는 기존 홈을 PUT /homes/{key}
으로 업데이트하려고 할 때 발생합니다.
여기에 현재 코드입니다 :
/**
* PUT /homes/{key}
*
* Updates an existing Home.
*
* @param Request $request
* @param string $key
* @return Response
* @throws HttpException
*/
public function putHomeAction(Request $request, $key)
{
// check that the home exists
$home = $this->getRepository()->findOneBy(array('key' => (int) $key));
// disallow create via PUT as we want to generate key ourselves
if (!$home) {
throw new HttpException(403, 'Home key: '.$key." doesn't exist, to create use POST /homes");
}
// create object graph from JSON string
$updatedHome = $this->get('serializer')->deserialize(
$request->getContent(), 'Acme\ApiBundle\Document\Home', 'json'
);
// replace existing Home with new data
$dm = $this->get('doctrine.odm.mongodb.document_manager');
$home = $dm->merge($updatedHome);
$dm->flush();
$view = View::create()
->setStatusCode(200)
->setData($home);
$response = $this->get('fos_rest.view_handler')->handle($view);
$response->setETag(md5($response->getContent()));
$response->setLastModified($home->getUpdated());
return $response;
}
조치에 전달 된 JSON 문자열이 성공적으로 JMSSerializer하여 내 문서 객체 그래프 직렬화 복원되고,하지만 난 병합 & 플러시를 시도 할 때, 다음과 같은 에러가 발생합니다
여기 설명서를 따라하려고 시도했습니다Notice: Undefined index: in ..../vendor/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/Mapping/ClassMetadataInfo.php line 1265
이 s입니다 병합을 시도하기 전에 탈상화 된 집에해야 할 일이 있습니까? 잘못된 방법을 병합합니까?
감사합니다.