Doctrine 在插入数据时忽略字段

Doctrine 在插入数据时忽略字段,doctrine,Doctrine,我有以下问题: 实体具有经典的创建/更新时间戳字段,这些字段应设置为UTC中的当前时间戳 在实体上,我使用columnDefinition属性将它们分别设置为“TIMESTAMP NOT NULL DEFAULT CURRENT\u TIMESTAMP”和“TIMESTAMP NOT NULL DEFAULT CURRENT\u TIMESTAMP On UPDATE CURRENT\u TIMESTAMP”(这并没有导致实际具有时间戳字段(必须在迁移中更改) 问题是:条令一直为这些字段传递空值

我有以下问题:

实体具有经典的创建/更新时间戳字段,这些字段应设置为UTC中的当前时间戳

在实体上,我使用columnDefinition属性将它们分别设置为
“TIMESTAMP NOT NULL DEFAULT CURRENT\u TIMESTAMP”
“TIMESTAMP NOT NULL DEFAULT CURRENT\u TIMESTAMP On UPDATE CURRENT\u TIMESTAMP”
(这并没有导致实际具有时间戳字段(必须在迁移中更改)

问题是:条令一直为这些字段传递空值,但在服务器上“explicit\u defaults\u for\u timestamp”处于活动状态,因此我没有获得默认值,而是得到了一个错误

如果我在这些字段上允许NULL,那么我只需要在DB中得到一个NULL值

我不想使用DateTime,因为这些值是由PHP服务器设置的(我在另一个时区使用DB服务器,两者都可能会更改)。我也不想以编程方式强制UTC,因为这会让开发人员犯错误。基本上,我真的想让mySQL做它的事情,并按照设计的那样自动插入默认的时间戳

为此,我需要做的就是说服Doctrine,它不应该插入created=NULL,而应该跳过这个字段,不发送任何值

有人知道实现这一目标的方法吗


谢谢!

从实体中删除这些列/属性,这样Doctrine就不会知道这些列/属性,也不会尝试为它们发送空/空值。然后,或者,使用单独的(副本)仅用于读取目的的实体或使用自定义方法或检索这些值。虽然不美观,但这是一个原则问题。

我们也遇到了同样的问题,我们决定在存储库中创建自己的
保存
方法,并为特定实体在
预清除
上添加异常