Make column not nullable in a Laravel migration

喜夏-厌秋 提交于 2019-11-30 10:32:05

问题


I'm writing a migration to make certain columns in a table nullable right now. For the down function, I of course want to make those columns not nullable again. I looked through the schema builder docs, but couldn't see a way to do this.

Any help would be appreciated.


回答1:


Prior to Laravel 5 there was no Laravel native way of altering an existing table column using the schema builder. You'd need to use raw queries for this.

However, as of Laravel 5 you can use:

$table->...->nullable(false)->change();



回答2:


As of Laravel 5, it's possible to reverse this natively - simply pass false as an argument to nullable().

e.g.

$table -> string('foo') -> nullable(false) -> change();



回答3:


First run this:

composer require doctrine/dbal

Then create a migration that will alter the table like so:

php artisan make:migration fix_whatever_table_name_here

public function up()
{
    Schema::table('table_name', function (Blueprint $table) {
        $table->type('column')->nullable(false)->change();
    });
}

public function down()
{
    Schema::table('table_name', function ($table) {
        $table->dropColumn('column');
    });
}



回答4:


the below information is for SQL
Use the below code first

UPDATE [Table] SET [Column]=0 WHERE [Column] IS NULL

than run this code

ALTER TABLE [Table] MODIFY [Column] INTEGER NOT NULL


来源:https://stackoverflow.com/questions/14013832/make-column-not-nullable-in-a-laravel-migration

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!