在 laravel 中更改迁移值

Posted

技术标签:

【中文标题】在 laravel 中更改迁移值【英文标题】:Changing a migration value in laravel 【发布时间】:2021-03-02 10:48:31 【问题描述】:

我创建了一个可以为空的迁移,但后来我意识到它应该是默认值 0。有没有办法通过另一个迁移来改变它。

这是我最初的迁移

Schema::table('items', function (Blueprint $table) 
    $table->unsignedBigInteger('total')->nullable();
);

这是我正在尝试运行的迁移

Schema::table('items', function (Blueprint $table) 
    $table->unsignedBigInteger('total')->default(0);
);

【问题讨论】:

laravel.com/docs/8.x/migrations#updating-column-attributes 请阅读文档 不知道这是否是一种好的做法,但如果您的数据库是新的并且不是实时的,那么您可以对现有迁移进行更改,而不是仅仅为了修改列属性并运行该迁移而进行另一次迁移就像新的一样,假设您设置了播种机,因为您将丢失运行新迁移的数据。 这能回答你的问题吗? Make column not nullable in a Laravel migration 【参考方案1】:

参考 Laravel 8.x 文档你可以试试这段代码来更新列属性

Schema::table('items', function (Blueprint $table) $table->unsignedBigInteger('total')->default(0)->change(); );

【讨论】:

我试过了,我的数据库中的项目仍然为空 你能详细说明你是怎么做到的吗? $table->unsignedBigInteger('total')->default(0)->change(); 然后运行 ​​migrate 你使用的是哪个版本的 laravel? 你添加依赖了吗?? composer require doctrine/dbal

以上是关于在 laravel 中更改迁移值的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 迁移中更改日期格式

使用 Laravel,您可以在迁移过程中更改列名吗?

在 Laravel 迁移中更改列类型的最佳方法是啥?

Laravel - 更改默认值 eloquent

Laravel 迁移更改表名

如何在测试 laravel 中更改迁移中的枚举类型列