我有一个具有该timestamps()方法的迁移,然后我有一个种子来播种该表.
Schema::create('mytable', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->timestamps();
});
Run Code Online (Sandbox Code Playgroud)
种子看起来像这样:
DB::table('mytable')->insert([
[
'title' => 'My Awesome Title'
]
]);
Run Code Online (Sandbox Code Playgroud)
当它全部运行时使用:
php artisan migrate:refresh --seed
Run Code Online (Sandbox Code Playgroud)
该项目被插入,但值created_at和updated_at都0000-00-00 00:00:00那他们为什么不正确?
这是它创建的列方案:
`created_at` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
Run Code Online (Sandbox Code Playgroud)
我想要这些方案:
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
Run Code Online (Sandbox Code Playgroud) 我不知道为什么,但是当我想插入一些东西时:
users::insert([
'first_name' => $first_name,
'last_name' => $last_name,
'remember_token' => $remember_token,
]);
Run Code Online (Sandbox Code Playgroud)
它只是将 NULL 插入到 created_at 和 updated_at 列中。我试过这些:
'create_at' => time(),
'updated_at' => time(),
'create_at' => '',
'updated_at' => '',
'create_at' => TRUE,
'updated_at' => TRUE,
Run Code Online (Sandbox Code Playgroud)
但他们都没有工作,但只是 TRUE 把 0000-00-00 00:00:00。
我这样创建迁移: 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_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
Run Code Online (Sandbox Code Playgroud)
这清楚地表明的默认值为created_at …