php artisan默认created_at列为NULL而不是当前日期时间

时间:2019-11-15 10:47:27

标签: php laravel laravel-5

我这样创建迁移:php artisan make:migration create_categories_table --create categories

然后我添加一些列,例如:

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

然后:php artisan migrate

这将创建表categories,然后将其插入类别:

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

这将插入行,但created_at列是null,而不是当前时间戳。

我的错误是什么?

我做了(mysql命令):show create table categories

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 

清楚地表明created_at的默认值为NULL。为什么?

1 个答案:

答案 0 :(得分:5)

代替使用

$table->timestamps();

使用

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

它将设置在列创建并在列更新的默认值。然后它将存储当前时间戳。