2015-07-09 2 views
2

У меня есть следующий вопрос в:Игнорирование поля при вставке данных с доктриной

Субъект имеет классические создан/обновляются поля временных меток, которые должны быть установлены на текущую отметку время в формате UTC.

В сущности, я использовал свойство ColumnDefinition, чтобы установить их "TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP" и "TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP" соответственно (это не привело к фактически не имея TIMESTAMP полей (пришлось изменить, что в миграции)

Проблема:. Учение продолжает прохождение Значения NULL для этих полей, но на сервере «explicit_defaults_for_timestamp» активны, поэтому вместо получения значения по умолчанию я получаю сообщение об ошибке.

Если я разрешаю NULL в этих полях, то я просто получаю значение NULL в БД.

Я не хочу использовать DateTime, поскольку значения задаются сервером PHP (и я использую сервер БД в другом часовом поясе, оба могут измениться). Я также не хочу форсировать UTC программно, так как это открывает код для разработчиков, чтобы делать ошибки. В принципе, я действительно хочу, чтобы mySQL делал свое дело и автоматически вставлял DEFAULT_TIMESTAMP, поскольку он был предназначен для этого.

Все, что мне нужно сделать, это убедить Doctrine, что вместо того, чтобы вставлять created = NULL, он должен просто пропустить это поле и не отправлять какое-либо значение.

Кто-нибудь знает, как достичь этого?

Спасибо!

ответ

0

Удалить эти столбцы/свойства из объекта, поэтому Doctrine не знает о них и не пытается отправлять пустые/нулевые значения для них. Затем либо иметь отдельный (дублированный) объект, который используется только для чтения, либо использовать пользовательский гидратор для извлечения этих значений. Не изящно, но это проблема Доктрины.

Смежные вопросы