当前位置: 首页 > 知识库问答 >
问题:

Laravel 8-更改现有迁移

刘焱
2023-03-14

我正在Laravel Framework8.33.1上进行开发,并在本地环境和生产环境中进行以下迁移。

class CreateCompanyTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('company', function (Blueprint $table) {
            $table->id();
            $table->integer('company_id');
            $table->integer('messageId');
            $table->string('url');
            $table->timestamps();

            /**
            New table:
            $table->id();
            $table->integer('company_id')->nullable($value = true);
            $table->integer('messageId');
            $table->integer('people_id')->nullable($value = true);
            $table->string('url')->nullable($value = true);
            $table->timestamps();
             */
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('company');
    }
}

我想用以下经过调整的字段来更改迁移:

            $table->id();
            $table->integer('company_id')->nullable($value = true);
            $table->integer('messageId');
            $table->integer('people_id')->nullable($value = true);
            $table->string('url')->nullable($value = true);
            $table->timestamps();

由于我正在生产中使用当前的迁移,我不希望丢失数据。

我只是尝试用我的新表定义修改迁移文件,但我得到了:

> php artisan migrate
Nothing to migrate.

有什么建议如何在Laravel适当地改变迁移?

谢谢你的回复!

共有1个答案

单喜
2023-03-14

若要修改现有表,请创建新的迁移。

PHP工匠制作:Migration alter_company_table

class AlterCompanyTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('company', function (Blueprint $table) {
            $table->integer('company_id')->nullable()->change();
            $table->integer('people_id')->nullable();
            $table->string('url')->nullable()->change();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('company', function (Blueprint $table) {
            $table->integer('company_id')->nullable(false)->change();
            $table->dropColumn('people_id');
            $table->string('url')->nullable(false)->change();
        });
    }
}
 类似资料:
  • SQLAlchemy变更日志和迁移指南现在集成在主文档中。 当前迁移指南 SQLAlchemy 1.4有什么新功能? SQLAlchemy 2.0概述和状态 迁移到Alchemy 更改日志 1.4变更日志 1.3换热器 1.2换热器 1.1换热器 1换热器 0.9换热器 0.8换热器 0.7换热器 0.6换热器 0.5换热器 0.4换热器 0.3换热器 0.2换热器 0.1换热器 旧的迁移指南 S

  • 问题内容: 我正在尝试学习一些Flask,并且正在使用Flask-Migrate 1.6.0 所以我做了一个看起来像这样的模型 然后我将其更改为完全相同的东西,除了这一行: 当我运行我的 命令,它不会检测列类型的更改。我已经阅读了它,我知道当我更改env.py并添加compare_type = True变量时,它应该将其选中。但是我这样做无济于事,该方法现在看起来像这样 好的,所以我的问题是: 更

  • 我目前正在研究Flyway作为Liquibase的替代方案,但在文档中无法找到以下问题的答案: 假设在生产环境中部署后发现迁移包含错误。回想起来,不应该按原样执行,但已经太晚了。但是,我们想用固定版本的替换迁移,这样从头开始填充的数据库就不会遭受相同的错误。 在 Liquibase 中,您将修复原始变更集并使用

  • 我有一个已经分配了默认值的表。例如,我们可以查看以下内容: 现在我想更改活动字段的默认值。我期待着做这样的事情: 但它当然告诉我专栏已经在那里了。如何简单地更新x列的默认值而不删除该列?

  • 我用未签名的创建了一个迁移。如何在新迁移中编辑,使其也可以?

  • 我需要重命名一个Flyway迁移文件。我已经在本地数据库上应用了迁移。 如何删除或重置本地postgres数据库,使其不存在Flyway迁移异常?