我怎样才能让 Gedmo\Timestampable 在第一次创建时保持 updated_at 为空?
How can I get Gedmo\Timestampable to keep updated_at null on first create?
我有一个 Symfony 2.8 应用程序,它使用 Gedmo\Timestampable
注释进行自动 created_at
和 updated_at
操作,但它似乎将相同的时间戳放入 updated_at
列,当 entity/row 首次创建时。 UPDATE
确实会导致 updated_at
列显示较新的时间戳,但我希望它是空白的。
我的理解是,在 INSERT
上,只有 created_at
列应该填充时间戳,而 updated_at
应该留空,因为它还没有更新为这样的。只有在列的第一次更新后,它才能获得更新时间的值。
我的预期是否正确?我的 code/config 有问题吗?或者这个注释实际上是通过设计为两列设置值的吗?
我的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;
...
table 将两列定义为 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 也有点像 table / 记录的更新。如果您需要知道该对象是否是新创建的,您仍然可以在 "createdAt" 中存储的日期和 "updatedAt" 中存储的日期之间进行检查。
我有一个 Symfony 2.8 应用程序,它使用 Gedmo\Timestampable
注释进行自动 created_at
和 updated_at
操作,但它似乎将相同的时间戳放入 updated_at
列,当 entity/row 首次创建时。 UPDATE
确实会导致 updated_at
列显示较新的时间戳,但我希望它是空白的。
我的理解是,在 INSERT
上,只有 created_at
列应该填充时间戳,而 updated_at
应该留空,因为它还没有更新为这样的。只有在列的第一次更新后,它才能获得更新时间的值。
我的预期是否正确?我的 code/config 有问题吗?或者这个注释实际上是通过设计为两列设置值的吗?
我的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;
...
table 将两列定义为 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 也有点像 table / 记录的更新。如果您需要知道该对象是否是新创建的,您仍然可以在 "createdAt" 中存储的日期和 "updatedAt" 中存储的日期之间进行检查。