如何在不丢失 laravel 中的数据的情况下向现有迁移 table 添加额外的列?
How to add extra columns to an existing migration table without lossing data in laravel?
我有一个迁移 table 负责存储详细信息,在我的数据库中它包含一些数据,现在我想在我现有的 table 中添加一些两列而不丢失任何数据我的数据库(这些应该反映在我的数据库中也不会影响我数据库中的任何数据)。我想在我现有的 table 中添加这些列 $table->string('country'); $table->string('station');
如何实现这个东西,请指导我添加我现有的列 table..
migration table
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateBlogsTable extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('passport_table', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('price');
$table->integer('rating');
$table->longText('image');
$table->unsignedInteger('user_id');
$table->foreign('user_id')->references('id')->on('user_table');
$table->timestamps();
//$table->softDeletes();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('passport_table');
}
}
您创建一个新迁移 php artisan make:migration add_extra_fields_passport_table
,迁移应该如下所示。
public function up(): void
{
Schema::table('passport_table', function (Blueprint $table) {
$table->string('country')->after('image');
$table->string('station')->after('country');
});
}
public function down(): void
{
Schema::table('passport_table', function (Blueprint $table) {
$table->dropColumn('country');
$table->dropColumn('station');
});
}
您使用迁移来确保所有数据库同步、本地、暂存、生产等。如果您重写迁移,如果已执行某些迁移,它们将不会同步。我使用 after()
方法,以确保在 image
列之后的 table 中正确放置。
如果您只是在本地单独开发并且没有发布任何内容,您可以更改原始迁移。然后,您必须在迁移 table 中删除与您的文件相对应的迁移行,并清理您的 table 结构以避免重新运行迁移时出错。或者,可以回滚迁移,这是另一种方法。然后你可以 运行 php artisan migrate 并且它会再次重新运行 相同的代码。但建议只创建一个新的迁移,这样更容易。
我有一个迁移 table 负责存储详细信息,在我的数据库中它包含一些数据,现在我想在我现有的 table 中添加一些两列而不丢失任何数据我的数据库(这些应该反映在我的数据库中也不会影响我数据库中的任何数据)。我想在我现有的 table 中添加这些列 $table->string('country'); $table->string('station');
如何实现这个东西,请指导我添加我现有的列 table..
migration table
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
class CreateBlogsTable extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('passport_table', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('price');
$table->integer('rating');
$table->longText('image');
$table->unsignedInteger('user_id');
$table->foreign('user_id')->references('id')->on('user_table');
$table->timestamps();
//$table->softDeletes();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('passport_table');
}
}
您创建一个新迁移 php artisan make:migration add_extra_fields_passport_table
,迁移应该如下所示。
public function up(): void
{
Schema::table('passport_table', function (Blueprint $table) {
$table->string('country')->after('image');
$table->string('station')->after('country');
});
}
public function down(): void
{
Schema::table('passport_table', function (Blueprint $table) {
$table->dropColumn('country');
$table->dropColumn('station');
});
}
您使用迁移来确保所有数据库同步、本地、暂存、生产等。如果您重写迁移,如果已执行某些迁移,它们将不会同步。我使用 after()
方法,以确保在 image
列之后的 table 中正确放置。
如果您只是在本地单独开发并且没有发布任何内容,您可以更改原始迁移。然后,您必须在迁移 table 中删除与您的文件相对应的迁移行,并清理您的 table 结构以避免重新运行迁移时出错。或者,可以回滚迁移,这是另一种方法。然后你可以 运行 php artisan migrate 并且它会再次重新运行 相同的代码。但建议只创建一个新的迁移,这样更容易。