如何在 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();
});
在上面我添加了 avatar
、first_name
、last_name
和 nickname
列。
我的问题是当我 运行 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
我正在尝试向 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();
});
在上面我添加了 avatar
、first_name
、last_name
和 nickname
列。
我的问题是当我 运行 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