簡體   English   中英

在 Laravel 遷移中使列不可為空

[英]Make column not nullable in a Laravel migration

我正在編寫遷移以使表中的某些列現在可以為nullable 對於down function,我當然想讓那些列not nullable 我查看了架構生成器文檔,但看不到這樣做的方法。

任何幫助,將不勝感激。

在 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() 的情況下再次聲明該列並使用 ->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(); 

以下信息適用於SQL
首先使用以下代碼

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

而不是運行此代碼

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM