当前位置: 首页 > 知识库问答 >
问题:

PHP工匠默认created_at列为NULL而不是当前日期时间

洪念
2023-03-14

我创建迁移是这样的:php artisan make:迁移create_categories_table-创建类别

然后我添加了一些列,比如:

Schema::create('categories', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name', 150);
        $table->timestamps();
});

然后:php artisan迁移

这将创建表类别,然后在类别中插入:

 insert into categories
 (name)
 values
 ('sport')

这将插入行,但在列创建的null而不是当前时间戳。

我犯了什么错?

我做了(mysql命令):显示创建表类别

CREATE TABLE `categories` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
`name` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL, 
`created_at` timestamp NULL DEFAULT NULL, 
`updated_at` timestamp NULL DEFAULT NULL, 
 PRIMARY KEY (`id`) ) 
ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4     
COLLATE=utf8mb4_unicode_ci 

这清楚地表明在处创建的的默认值为空。为什么?


共有1个答案

艾晋
2023-03-14

而不是使用,

$table->timestamps();

使用

$table->timestamp('created_at')->useCurrent();
$table->timestamp('updated_at')->useCurrent();

它将设置在列处创建和在列处更新的默认值。之后,它将存储当前时间戳。

 类似资料:
  • 我在MySQL数据库中有一个表,其中包含一个默认值的列,在数据库端使用phpMyAdmin定义。当我使用HiberNate插入新行时,我得到这个错误: 通用域名格式。mysql。jdbc。例外。jdbc4。MySQLIntegrityConstraintViolationException:列“status”不能为null 我还需要做些什么来使用默认值吗? 实体

  • 问题内容: 输出: IST 2017年9月12日12:36:24 IST 2007年1月1日星期一12:36:24 但是,当我在不同的环境中使用相同的代码时,输​​出更改为以下内容: 输出: IST 2017年9月12日12:36:24 2007年1月1日星期一格林尼治标准时间12:36:24 仅供参考,我尝试在设置值之前和之后打印日历实例的时区,并且两者都在“ IST”中。 我想知道这个的根本原

  • 我对Liquibase有点陌生。我遇到了一个场景,在一个中,它试图首先添加默认值,而不是旁边的空约束。 但这里的问题是两者都

  • 问题内容: 我用Java编写并编译了一个简单的Hello World程序,但是当我尝试运行该程序时,却收到了错误消息。只有在我执行命令后,它才能成功运行。 奇怪的是,当前目录似乎已经是类路径的一部分。剧本 打印,尽管我再次必须显式设置该选项。 有谁知道为什么会这样?我正在使用Ubuntu 16.04和open-JDK版本1.8。 问题答案: 我希望已经设置了环境变量。运行以查看其设置。 如果您不使

  • 我的桌子是这样的: ID名称日期1 a 2 b 3 C 当我今天选择一个随机用户时: 到目前为止,我的程序运行良好。我想要的是周二(03/15/2016)当我运行随机选择器时,我希望它将B和C的日期重置为空,并用2016-03-14留下A,这样A就不会在周二被选中。