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

OTA*_*TAR 1 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();
});
Run Code Online (Sandbox Code Playgroud)

然后: php artisan migrate

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

 insert into categories
 (name)
 values
 ('sport')
Run Code Online (Sandbox Code Playgroud)

这将插入行,但created_atnull,而不是当前的时间戳。

我怎么了

我做了(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 
Run Code Online (Sandbox Code Playgroud)

这清楚地表明的默认值为created_atNULL。为什么?

Rit*_*tri 5

而不是使用

$table->timestamps();
Run Code Online (Sandbox Code Playgroud)

使用,

$table->timestamp('created_at')->useCurrent();
$table->timestamp('updated_at')->useCurrent();
Run Code Online (Sandbox Code Playgroud)

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