我现在正在编写迁移以在表 nullable
中创建某些列。对于向下功能,我当然想再次制作这些列 not nullable
。我查看了 schema builder docs,但找不到执行此操作的方法。
任何帮助,将不胜感激。
在 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
首先运行这个:
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() 的情况下再次声明该列并使用 ->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();
});
}
在 laravel 8 中,您只需输入:“->nullable()”
$table->string('name')->nullable();
$table->string('colmn', 255)->nullable()->change();
),但反过来似乎不起作用($table->string('colmn', 255)->change();
),所以你仍然需要为此使用原始数据库查询nullable(false)
在 Laravel 5.3 中对我不起作用 :(