我这样创建迁移: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。为什么?
答案 0 :(得分:5)
代替使用
$table->timestamps();
使用
$table->timestamp('created_at')->useCurrent();
$table->timestamp('updated_at')->useCurrent();
它将设置在列创建并在列更新的默认值。然后它将存储当前时间戳。