Как я могу получить Gedmo \ Timestampable, чтобы при обновлении сохранять null updated_at при первом создании?

У меня есть приложение Symfony 2.8, которое использует Gedmo\Timestampable аннотации для автоматического created_at а также updated_at операции, но, похоже, ставит ту же метку времени в updated_at столбец, когда объект / строка создается впервые. UPDATE действительно вызывает updated_at столбец, чтобы показать более новую временную метку, но я хочу, чтобы это было пустым для начала.

Я понимаю, что на INSERT, только created_at столбец должен быть заполнен отметкой времени и updated_at должен оставаться пустым, потому что он не был обновлен как таковой. Только после первого обновления столбца он может получить значение времени обновления.

Правильно ли я ожидать этого? Что-то не так с моим кодом / конфигом? Или эта аннотация фактически устанавливает значения для обоих столбцов по проекту?

мой config.yml:

...
stof_doctrine_extensions:
default_locale: "%locale%"translation_fallback: true
orm:
default:
translatable: true
timestampable: true
...

Моя сущность:

...
/**
* An automatic timestamp of the creation.
*
* @var \DateTime $createdAt
* @Gedmo\Timestampable(on="create")
* @ORM\Column(name="created_at", type="datetime")
*/
public $createdAt;

/**
* An automatic timestamp of the updation.
*
* @var \DateTime $updatedAt
* @Gedmo\Timestampable(on="update")
* @ORM\Column(name="updated_at", type="datetime")
*/
protected $updatedAt;
...

Таблица определяет два столбца как DATETIME и у них нет пунктов по умолчанию.

2

Решение

Это сделано специально, как мы видим, если мы откроем файл «vendor / gedmo / doctrine-extensions / lib / Gedmo / Timestampable / Timestampable.php», строка 22 (в моей версии Gedmo):

/**
* @gedmo:Timestampable(on="update")
* dates which should be updated on update and insert
*/

В конце концов, INSERT — это своего рода обновление таблицы / записи. Если вам необходимо узнать, был ли объект создан недавно или нет, вы все равно можете выполнить проверку между датой, сохраненной в «createAt», и датой, сохраненной в «updatedAt».

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]