Как обновить сущность Doctrine из сериализованного JSON?

Мы используем Symfony2 для создания API. При обновлении записи мы ожидаем, что входные данные JSON будут представлять собой сериализованную обновленную сущность. Данные JSON не будут содержать некоторых полей (например, CreatedAt должен быть установлен только один раз при создании сущности - и никогда не обновляться). Например, вот пример JSON PUT запроса:

{"id":"1","name":"anyname","description":"anydescription"}

Вот PHP код на контроллере, который должен обновить сущность в соответствии с приведенным JSON (мы используем JMS serializer Bundle):

$supplier = $serializer->deserialize(
    $this->get('request')->getContent(),
    'WhateverEntity',
    'json'
);

EntityManger понимает (правильно), что это запрос на обновление (фактически, неявно вызывается SELECT запрос). EntityManager также догадывается (неправильно), что свойство CreatedAt должно быть NULLified - вместо этого оно должно сохранить предыдущее.

Как исправить эту проблему?

8
задан Roberto 4 January 2012 в 12:06
поделиться