如何向已迁移的表中添加可为空的列类型

时间:2019-04-03 17:34:28

标签: php laravel laravel-5

我与->nullable()进行了迁移 并且它已经被迁移并填充了数据。现在,我必须使此列为migrate:refresh,但不使用rollback<dial timeout="30"> <number>xxx-xxx-xxxx</number> <number>xxx-xxx-xxxx</number> </dial> 。我怎么能做到这一点,甚至有可能。

注意:没有原始sql查询或phpmyadmin。寻找迁移方法。

3 个答案:

答案 0 :(得分:1)

创建新的迁移并在下面添加代码:

Schema::table('table_name', function (Blueprint $table) {
    $table->string('published_at')->nullable()->change();
});

或者如果使用mysql:

您可以直接在phpmyadmin中更改表的结构

转到phpmyadmin->表->结构

编辑publishd_at列并在null处打钩

答案 1 :(得分:1)

您可以创建一个新的迁移:

"name":

这将生成一个名为的新迁移文件

{"id":1, "name":"Robert"}, {"id":2, "name":"Skylar"}, {"id":3, "name":"Ben"}, {"id":4, "name":"Anne"}

在此迁移文件中,添加以下代码:

php artisan make:migration change_published_at_to_nullable

运行命令XXXX_YYY_ZZZ_000000_change_published_at_to_nullable.php 时,public function up(){ Schema::table("table", function (Blueprint $table) { $table->string("published_at")->nullable()->change(); }); } public function down(){ Schema::table("table", function (Blueprint $table) { $table->string("published_at")->nullable(false)->change(); }); } 列将更改为允许php artisan migrate。如果您需要撤消此操作,则published_atnullphp artisan migrate:refresh会将列改回以允许php artisan migrate:reset

答案 2 :(得分:-1)

简单的方法是只运行如下查询:

ALTER TABLE my_table MODIFY published_at DATETIME NULL