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

14 浏览
0 Comments

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

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

我知道这篇文章显示了如何从一个表中重命名一个列:

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

是否有办法执行相同的迁移来重命名多个列?(只有一个迁移文件,而不是多个...尽量减少创建迁移文件的数量)

0
0 Comments

Laravel 5.0 - 重命名一个迁移中的多个列

在Laravel中,如果需要更新给定表中的多个列,只需要在迁移文件中为每个需要更新的列添加renameColumn()语句即可。下面是一个我运行的示例:

class MultipleColumnUpdate extends Migration
{
    /**
     * Run the migrations.
     *
     *  void
     */
    public function up()
    {
        Schema::table('users', function ($table) {
            $table->renameColumn('name', 'user_name');
            $table->renameColumn('email', 'work_email');
        });
    }
    /**
     * Reverse the migrations.
     *
     *  void
     */
    public function down()
    {
        Schema::table('users', function ($table) {
            $table->renameColumn('user_name', 'name');
            $table->renameColumn('work_email', 'email');
        });
    }
}

然而,在Laravel 5.3中,我无法做到这一点,它会抛出"there is no column 'old_name'"的错误消息...

如果你想分享你的迁移文件,我可以看一下。我还没有使用过5.3版本,也没有审查过更改文档。

谢谢Nolan,但我后来解决了。这可能只是我的数据库中的错误,当然会抛出那个错误消息。=)5.3版本几乎与5.2版本相同。

如果将来有人遇到这个问题,请注意,SQLite似乎存在问题。你需要使用两个单独的Schema::table()调用,一个用于每个列的重命名。删除列的语句也是一样的。

0