php 在Laravel迁移中使列不可为空

gmxoilav  于 2023-03-07  发布在  PHP
关注(0)|答案(5)|浏览(196)

我正在编写一个迁移,使表中的某些列变为nullable。对于down函数,我当然想再次使这些列变为not nullable。我查看了schema builder docs,但没有看到这样做的方法。

vi4fp9gy

vi4fp9gy1#

在Laravel5之前,没有Laravel原生的方式来使用模式构建器修改现有的表列,您需要使用原始查询来实现这一点。
但是,从Laravel 5开始,您可以用途:

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

在运行上述命令之前,必须具有dbal相关性:

composer require doctrine/dbal
klr1opcd

klr1opcd2#

从Laravel 5开始,可以通过将false作为参数传递给nullable来逆转这一点。

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

3j86kqsm3#

首先运行以下命令:
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();
#     });
# }
bnlyeluc

bnlyeluc4#

您可以不使用-〉nullable()而使用-〉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();
    });
}
6g8kf2rb

6g8kf2rb5#

在laravel 8中,你只需要把这个:“-〉可为空()”

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

相关问题