使用 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的主要内容,如果未能解决你的问题,请参考以下文章

如果请求值为空,Laravel 设置默认值

Laravel 单元测试迁移失败

laravel-将默认日期设置为明天

如何使用 Laravel 迁移将字符串列类型转换为整数?

laravel 默认用户名和密码迁移错误

Laravel 迁移 - 如何将 `id` 字段更改为主要字段并稍后自动递增