将新列添加到表

时间:2019-04-12 14:08:48

标签: php laravel database-migration laravel-5.6

作为开发人员,我还是新手,我想更改用户表,如果我从上一个表中添加新列“ user_type”。

我的问题是:我可以这样做还是应该这样做? php artisan make:migration add_user_type_users 吗?

因此,如果无需使用add_user_type_users即可更改主表,那么在看到更改之前,应如何将其迁移到laravel forge中。因为,当我将更改提交到伪造时,它不会添加新列user_type。enter image description here

新信息

如何将更改提交到实时数据库中?我正在使用Laravel Forge和DigitalOcean

1 个答案:

答案 0 :(得分:1)

(编辑:回答原始问题)

如果需要将新闻列添加到现有表中,则必须:

  1. 创建一个新的迁移文件:php artisan make:migration <fileName>
  2. 在迁移文件上使用Schema::table()代替Schema::create()
  3. 添加列,如常见迁移
  4. 运行迁移:php artisan migrate

示例:

//change create for table
//the first param (in this case 'users') must be the table name that you want to add columns
Schema::table('users', function (Blueprint $table) {
        //news colums here
        $table->string('new_col');
    });

编辑: 回答已编辑的问题:

  

我可以这样做还是应该做php artisan make:migration   add_user_type_users吗?

-

这可能是正确的方法:

是的,您可以编辑旧的迁移文件,但是下一个php artisan migrate不会更改已经迁移的文件,在这种情况下,您必须在此处删除表及其数据,并从中删除迁移表,用于运行编辑后的迁移文件。因此,这不是生产环境的答案。如果您这样做,则会遇到很多您会避免的问题。 也许您可以在开发人员上这样做。环境因为您可以随时删除和创建表,而不会丢失真实数据。

-

正确的方法:

您必须创建新的迁移文件(就像原始答案一样),并且不会有丢失数据的问题(除非您希望这样做),并且迁移将在生产环境中进行,而无需删除任何内容。