如何在 Laravel 5 中创建仅向现有 table 添加列的迁移

How to create a migration in Laravel 5 that only adds a column to an existing table

我正在尝试向 Laravel 5 安装附带的通用 'users' table 添加一些新列。

但是我创建了一个新的迁移,它执行 Schema::create 如下:

Schema::create('users', function(Blueprint $table)
{
    $table->increments('id');
    $table->string('username');
    $table->string('email')->unique();
    $table->string('password', 60);
    $table->string('avatar');
    $table->string('first_name');
    $table->string('last_name');
    $table->string('nickname');
    $table->rememberToken();
    $table->timestamps();
});

在上面我添加了 avatarfirst_namelast_namenickname 列。

我的问题是当我 运行 php artisan migrate 它告诉我 Nothing to migrate.

如何创建 "update" 迁移?

来自http://laravel.com/docs/5.1/migrations#creating-columns

创建列

要更新现有的 table,我们将在 Schema facade 上使用 table 方法。与 create 方法一样,table 方法接受两个参数:table 的名称和一个接收蓝图实例的闭包,我们可以使用它向 table 添加列:

Schema::table('users', function ($table) {
    $table->string('email');
});

也从http://laravel.com/docs/5.1/migrations#creating-columns

看这个

在单个命令中回滚/迁移注意:使用此方法您将丢失数据库中的所有数据

migrate:refresh 命令将首先回滚所有数据库迁移,然后 运行 迁移命令。此命令有效地重新创建整个数据库:

php artisan migrate:refresh

您还可以从迁移 table 中删除特定迁移的迁移行(用户迁移通常是一批 1 个)。然后运行phpartisan再次迁移。

每个迁移都存储在迁移 table(检查您的数据库)中,因此要重新创建 table 您需要删除 table(用户)在迁移 table

大致流程:

我已经浪费了 6 个小时来解决你遇到的同样问题,但现在它就像食物一样可以吃。

第 1 步:先决条件:

在修改列之前,请务必将 doctrine/dbal 依赖项添加到 composer.json 文件中。 Doctrine DBAL 库用于确定列的当前状态并创建对列进行指定调整所需的 SQL 查询

第 2 步:创建列:

Schema facade 上的 table 方法可用于更新现有的 table。与 create 方法一样,table 方法接受两个参数:table 的名称和一个接收蓝图实例的闭包,您可以使用它向 table 添加列:

   Schema::table('users', function (Blueprint $table) {
   $table->string('email');
   });

第 3 步(如果需要):

在控制台中使用以下命令

php artisan migrate:refresh