У меня есть приложение 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
и у них нет пунктов по умолчанию.
Это сделано специально, как мы видим, если мы откроем файл «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».
Других решений пока нет …