在 Laravel 迁移中使列不为空

我现在正在编写一个迁移来确定表 nullable中的某些列。对于 down 函数,我当然希望再次创建这些列 not nullable。我查看了 模式构建器文档,但找不到这样做的方法。

如果你能帮忙,我将不胜感激。

125032 次浏览

在 Laravel 5之前,Laravel 没有使用模式构建器修改现有表列的本机方法。您需要为此使用原始查询。

然而,在 Laravel 5中你可以使用:

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

在运行上述命令之前,必须具有 dbal 依赖项:

composer require doctrine/dbal

在 Laravel 5中,可以通过将 false 作为参数传递给 nullable来逆转这种情况。

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

首先运行这个:

composer require doctrine/dbal

然后创建一个迁移,像下面这样修改表:

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();
});
}


# Optional:
# public function down()
# {
#     Schema::table('table_name', function ($table) {
#         $table->type('column')->nullable()->change();
#     });
# }

您只需再次声明该列,而不需要-> nullable ()和 use-> change

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->type('column')->nullable()->change();
});
}

在幼虫8中,你只需要写下这个: ”-> 无效()

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