Я создаю новый Entity с существующим Id
, и я хочу обновить соответствующую запись базы данных.
Doctrine merge был моим лучшим другом: узнает, есть ли изменения и генерирует правильный запрос на обновление.
$entity = new Entity();
$entity->setId(1);
$entity->setName('test');
$EntityManager->merge($entity);
$EntityManager->flush();
Предположим, что элемент с id = 1 уже существует в db: если имя отличается от "test", Doctrine генерирует этот запрос:
UPDATE table SET name = ? WHERE id = ? ["test","1"]
Если я снова запустил код выше, Doctrine узнает, что ничего не изменилось, и запрос не передан.
Но..., когда я устанавливаю поле DateTime, Doctrine считает его измененным и всегда запускает запрос на обновление:
$entity = new Entity();
$entity->setId(1);
$entity->setDate(new \DateTime(2000-01-01));
$EntityManager->merge($entity);
$EntityManager->flush();
//* ALWAYS commits this query:
>> UPDATE table SET date = ? WHERE id = ? ["2000-01-01 00:00:00","1"]
Знаете ли вы, как избежать этого бесполезного обновления? Спасибо!