错误字段在laravel 5.3中没有默认值

时间:2017-01-19 19:32:37

标签: laravel laravel-5.3

我在Laravel 5.2中没有问题,但在为用户模型创建迁移后在Laravel 5.3中,它显示以下错误:

SQLSTATE[HY000]: General error: 1364 Field 'family' doesn't have a default value !!!

在模型用户中:

protected $fillable = [
    'name', 'email', 'password', 'family', 'mobile', 'address', 'status'
];

迁移:

Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('family');
        $table->string('mobile')->unique();
        $table->string('address');
        $table->boolean('status');
        $table->string('email')->unique();
        $table->string('password');
        $table->integer('reagent');
        $table->rememberToken();
        $table->timestamps();
    });

我的问题在哪里?

3 个答案:

答案 0 :(得分:4)

您应该向发送空值的字段添加->nullable()->default('somethingHere')

$table->string('family')->nullable(); //this means that if you send empty value this field will become MySQL NULL

或设置默认值:

$table->string('family')->default('default value here');

比重新移动:

php artisan migrate:rollback

php artisan migrate

答案 1 :(得分:0)

你可以nullable

$table->string('family')->nullable();

或添加一些默认值:

$table->string('family')->default('none');

之后你应该备份数据并运行:

php artisan migrate:refresh                                      

然后恢复数据。

或者您可以创建单独的迁移,只需change family to a nullable

Schema::table('users', function (Blueprint $table) {
    $table->string('family')->nullable()->change();
});

答案 2 :(得分:0)

我发现我的解决方案是链接: Eloquent create says column has no default value

答案在底部,我刚才引用了答案

  

imbhavin95 8个月前回复

     

然而,现在发生这种情况的原因是Laravel 5.1默认使用严格的MySQL模式。

     

如果您想恢复以前的行为,请更新您的config / database.php文件并设置' strict' =>你的联系是假的。

此人https://laravel.io/user/imbhavin95