如何在Laravel中重命名外键

时间:2019-03-20 12:36:22

标签: mysql laravel

我想在Laravel中重命名外键。

这是我创建的方式:

winodws sdk

现在,我想将account_id更改为engagement_id。该怎么做?

3 个答案:

答案 0 :(得分:1)

您需要通过以下方式进行新的迁移: php artisan make:migration rename_column

在里面:

class RenameColumn extends Migration
{

    public function up()
    {
        Schema::table('accounts', function(Blueprint $table) {
            $table->renameColumn('account_id ', 'engagement_id');
        });
    }

    public function down()
    {
        Schema::table('accounts', function(Blueprint $table) {
            $table->renameColumn('account_id ', 'engagement_id');
        });
    }
}

然后执行迁移: php artisan migrate

如果您还没有,则需要教义。您可以使用

通过composer获得此功能

composer require doctrine/dbal

答案 1 :(得分:1)

应该是这样的:

注意:重命名外来语之前,您必须删除旧的外来语并分配新的外来语

class RenameColumn extends Migration
{

    public function up()
    {
        Schema::table('holidays', function(Blueprint $table) {
            $table->dropForeign('holidays_account_id_foreign');
            $table->renameColumn('account_id ', 'engagement_id');

            $table->foreign('account_id')->references('id')->on('accounts')->onDelete('cascade');
        });
    }

    public function down()
    {
        Schema::table('holidays', function(Blueprint $table) {
            $table->dropForeign('holidays_engagement_id_foreign');
            $table->renameColumn('account_id ', 'engagement_id');

            $table->foreign('account_id')->references('id')->on('accounts')->onDelete('cascade');
        });
    }
}

答案 2 :(得分:0)

@rborum解释的内容要求安装doctrine / dbal软件包。否则,您可以直接执行sql查询来重命名密钥或进行其他任何更改。