В проекте Symfony2, я использую пользовательский Doctrine типа «UnixTime» для отображения полей даты хранятся в виде меток времени UNIX в унаследованной базе данных:Доктрина Timestampable на пользовательский тип поля в Symfony2
/**
* @var \DateTime
* @ORM\Column(name="created", type="unixtime", nullable=false)
*/
private $created;
Теперь я нравится использовать DoctrineExtensions и stof/doctrine-extensions-bundle
установить это свойство автоматически добавляя:
* @Gedmo\Timestampable(on="create")
Но это приводит к исключению, поскольку «UnixTime» не входит в число $validTypes
в Gedmo\Timestampable\Mapping\Driver\Annotation
в:
Field - [created] type is not valid and must be 'date', 'datetime' or 'time' in class ...
Когда я добавляю 'unixtime' непосредственно к этому массиву допустимых типов, все работает нормально.
Что было бы самым лучшим и наименее навязчивым способом заставить обработчик Timestampable работать с моим собственным типом? Есть ли способ настроить это? Нужно ли мне подкласс?
ли вы попробовать 'timestamp' тип https://github.com/Atlantic18/DoctrineExtensions/blob/master/ Библиотека/Gedmo/Timestampable/Mapping/Driver/Annotation.php # L34? – Callistino
Сопоставление как 'timestamp' на самом деле * кажется * работать, хотя я не уверен, почему. Я бы ожидал, что Doctrine преобразует объект DateTime в строку, форматированную как «Y-m-d H: i: s» при построении SQL. Конечно, я бы предпочел сохранить собственный тип. Тем не менее, это может быть жизнеспособным решением. –
Как оказалось, «временная метка» считалась рабочей, потому что она не использовалась преобразователем. После того, как я очистил свой кэш, «timestamp» был неизвестным типом доктрины. –