使用 laravel 迁移将默认设置为 NULL
Posted
技术标签:
【中文标题】使用 laravel 迁移将默认设置为 NULL【英文标题】:Set default to NULL with laravel migration 【发布时间】:2015-02-17 22:57:24 【问题描述】:我正在向迁移中的表添加一个字段,我希望允许它为 NULL,但我也希望它默认为 NULL。我在默认方法中放置了什么?我担心将"NULL"
放入会尝试放入我显然不想要的NULL
字符串。请帮忙:)
Schema::table('item_categories', function(Blueprint $table)
$table->integer('parent_item_category_id')->unsigned()->nullable()->default($what_to_put here);
);
【问题讨论】:
重复的问题和答案:***.com/a/57646679/8497354 【参考方案1】:当您对字段使用nullable()
方法时,该字段将默认为NULL。
$table->integer('parent_item_category_id')->nullable();
【讨论】:
如果一个字段之前有默认值,我尝试应用迁移,删除默认值并添加“可空”方法,然后“更改”,它不起作用。保留第一次迁移的默认值。只是“NOT NULL”定义被删除。 (使用 mysql。) “当你对一个字段使用 nullable() 方法时,该字段将默认为 NULL。”当启用严格的 DB 模式并且您使用时间戳时,Laravel 5.3 似乎不再适用。您必须将默认值显式设置为 null。 为例:$table->string('email')->nullable();
确实正如@JānisElmeris 所说,这不适用于更改。我必须添加一个带有语句的 DB::statement() 来更改默认值以使其正常工作。
是否可以为空,后跟默认冗余?它应该只是默认吗?例如:$table->boolean('share_location')->nullable()->default(0);
或 $table->boolean('share_location')->default(0);
以上是关于使用 laravel 迁移将默认设置为 NULL的主要内容,如果未能解决你的问题,请参考以下文章