Laravel 使用数据库中的空数据从可空迁移到非空

Laravel migration from nullable to not null with null data in database

我下面的代码工作正常。问题是当我在 user_id 字段中获得数据库中的空数据时。迁移回滚不会成功通过。解决这个问题的好方法是什么? 在回滚中将 nullable 更改为 false 之前,我是否应该将 user_id 列中的每个 null 更改为空字符串?

    public function up()
    {
        Schema::table('classes', function (Blueprint $table) {
            $table->text('user_id')->nullable()->change();
        });
    }
    
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('classes', function (Blueprint $table) {
            $table->text('user_id')->nullable(false)->change();
        });
    }

这个问题以前出现过,除了在更改列之前将值更新为空字符串外,我找不到其他解决方案,数据库引擎总是会抱怨。


已更新:

你可以这样做并且应该工作:

use Illuminate\Support\Facades\DB;

/*
*
* Some code
*
*/


public function up()
{
    DB::table('classes')->whereNull('user_id')->update(['user_id'=>'']);
    Schema::table('classes', function (Blueprint $table) {
        $table->text('user_id')->nullable()->change();
    });
}