dotelauv682684 2016-07-10 10:15
浏览 289
已采纳

在Laravel迁移中更改列类型的最佳方法是什么?

I have a User table in my DB:

        $table->increments('id');
        $table->string('fullName');
        $table->string('email')->unique();
        $table->string('password', 50);
        $table->enum('role',['boss','employee','customer'])->default('customer');
        $table->rememberToken();
        $table->timestamps();

I need to change 'role' column type to 'text' and after that, run the new migration in Laravel. If I want to have no effect on previous data, what is the best way to do this.

  • 写回答

2条回答 默认 最新

  • dontoften8899 2016-07-10 10:27
    关注

    You could try to:

    1. Create a new text column named "roleTemp"
    2. Run a query to set this column for each record - based on the "role" column
    3. Remove the "role" column
    4. Rename "roleTemp" to "role"

    Now simply change your database schema as is:

    $table->increments('id');
    $table->string('fullName');
    $table->string('email')->unique();
    $table->string('password', 50);
    $table->string('role');
    $table->rememberToken();
    $table->timestamps();
    

    Basically you duplicate the role values to a (temporarily) column and rename it. At least it is safe and won't take a lot of time.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?