[英]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.