php - 学说 : Set CURRENT_TIMESTAMP as default value

四处寻找了一段时间后,我仍然找不到让数据库服务器插入 CURRENT_TIMESTAMP 的方法(作为 INSERT 的默认值)。

问题:当你将一个对象持久化到数据库时,丢失的字段被 Doctrine 明确设置为 NULL。所以看起来,在表定义中设置默认值根本没有任何效果:-(

我不想通过 PHP 设置时间(例如 $object->setTimestamp(new\DateTime());),因为这可能会返回与数据库服务器不同的时间,如此处解释:https://stackoverflow.com/a/3705090/1668200

到目前为止我尝试了什么:

  • 按字面意思发送 NOW(例如 $object->setTimestamp('NOW()');),如此处所述:https://stackoverflow.com/a/13850741/1668200
    => 无效:错误:调用字符串上的成员函数 format()

  • 在持久化之前从对象中删除“timestamp”属性(参见 https://stackoverflow.com/a/3600758/1668200)也没有用:该字段无论如何都被 Doctrine 设置为 NULL。

我发现的任何其他解决方案(包括 Doctrine 扩展 'Timestampable' https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/timestampable.md )都使用 PHP 的时间。

最佳答案

/**
 * @ORM\Column(type="datetime", options={"default": "CURRENT_TIMESTAMP"})
 */
protected $created;     

请记住,如果您更新现有表格,这将不允许之前的行为空。

关于php - 学说 : Set CURRENT_TIMESTAMP as default value by the database (i. e.不是通过 PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31947364/

相关文章:

xml - Odoo:如何继承菜单项(使菜单项不可见)

php - Laravel 5.1 如何检查目录中是否存在文件?

javascript - 检查字符串的第一个字符是否为数字会报错,表明 charat 不是有效方法

python - 如果在 Python 中出现异常重试

batch-file - 批处理文件中的时间戳未正确更新

python - Django 休息框架 : How serialize list of list?

r - 如何在 R 中以固定网格模式绘制 "matrix"

Java - 编译器错误地解析 unicode 源文件

git - 为什么 git clone 有时创建一个 .git 目录,有时不创建?

asp.net - ResponseMode ="File"不工作