Laravel 5.0 - 在 1 个迁移中重命名多个列

Posted

技术标签:

【中文标题】Laravel 5.0 - 在 1 个迁移中重命名多个列【英文标题】:Laravel 5.0 - Rename multiple columns in 1 migration 【发布时间】:2016-10-11 22:09:47 【问题描述】:

我们最近切换了服务提供商,因此需要重命名此项目的数据库表中的多个列。

我知道this 帖子显示了如何从 1 个表中重命名 1 列:

php artisan migrate:make rename_stk_column --table="YOUR TABLE" --create

有没有办法用多列执行相同的迁移? (1 个迁移,不超过 1 个...尽量减少创建的迁移文件数量)

【问题讨论】:

【参考方案1】:

你可以添加多个 renameColumn();需要在给定表中更新的每一列的语句。只需要想出你们用于迁移文件的任何名称。

只是我运行的一个示例

class MultipleColumnUpdate extends Migration

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    
        Schema::table('users', function ($table) 
            $table->renameColumn('name', 'user_name');
            $table->renameColumn('email', 'work_email');

        );
    

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    
        Schema::table('users', function ($table) 
            $table->renameColumn('user_name', 'name');
            $table->renameColumn('work_email', 'email');
        );
    

【讨论】:

不知何故,我无法在 Laravel 5.3 上执行此操作,它会抛出“没有列 'old_name'”... @giovannipds 如果你想分享你的迁移,我可以看看。我尚未使用 5.3 或查看更改文档。 谢谢@Andrew Nolan,但我后来知道了。这可能只是我的数据库中的一个错误,当然它会抛出该消息。 =) 5.3 和 5.2 差不多。 以防将来有人发现。 SQLite 似乎对此有问题。您需要使用两个单独的 Schema::table() 调用,每个用于重命名列。 dropColumn 语句也是如此。

以上是关于Laravel 5.0 - 在 1 个迁移中重命名多个列的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 8 中重命名 .env 文件

如何在 Laravel 7 中重命名项目

在 itunesconnect 中重命名应用程序 - 迁移数据?

在 laravel 中重命名验证响应

在 Django 中重命名模型(表)

Laravel migrate - 列类型字符串不更新大小