相关疑难解决方法(0)

Laravel timestamps()不会创建CURRENT_TIMESTAMP

我有一个具有该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_atupdated_at0000-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)

php laravel eloquent laravel-seeding laravel-migrations

12
推荐指数
2
解决办法
3万
查看次数

Laravel 在插入新记录时将 null 放入 created_at 和 updated_at

我不知道为什么,但是当我想插入一些东西时:

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。

null laravel

4
推荐指数
1
解决办法
4884
查看次数

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

我这样创建迁移: 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_at …

php laravel laravel-5

1
推荐指数
1
解决办法
49
查看次数