2016-11-11 58 views
0

我已经这样:如何改变在laravel 5.3现有的表列使用迁移

$表 - >整数( 'ROLE_ID') - >指数() - >无符号() - >可为空的() ;

但我想把它改成这样:

$表 - >整数( 'ROLE_ID') - >指数() - >无符号() - >可空() - >默认( 3);

我本来想用这个,但源语法我不明白:

PHP工匠制作:迁移update_role_id_in_users --table =用户

我甚至使用doctrine/ddbal尝试包和运行此:

php artisan make:migration modify_role_id_in_users --table = users

与迁移设置是这样的:

class ModifyRoleIdInUsers extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::table('users', function (Blueprint $table) { 
      // 
      $table->integer('role_id')->index()->unsigned()->nullable()->default(3)->change(); 

     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::table('users', function (Blueprint $table) { 
      // 
      $table->integer('role_id')->index()->unsigned()->nullable()->change(); 
     }); 
    } 
} 

但是,当我去迁移我得到这个错误:

[照亮\数据库\ QueryException] SQLSTATE [42000] :语法错误 或访问冲突:1061重复键名'users_role_id_index' (SQL:alter table'users'add index'users_role_id_index'('role_
ID'))

[学说\ DBAL \驱动\ PDOException] SQLSTATE [42000]:语法错误 或访问冲突:1061重复键名 'users_role_id_index'

[PDOException] SQLSTATE [42000]:语法错误或访问冲突: 1061重复键名“users_role_id_index”

我怎样才能改变column而不做migrate:refresh

回答

2

您可以ü SE change()方法来做到这一点:

$table->integer('role_id')->index()->unsigned()->nullable()->default(3)->change(); 

记住通过迁移

希望这有助于更新 列前运行composer require doctrine/dbal

+0

我已经这样做,我得到了上面显示的错误。 –

+0

请按照我上面所做的那样,将代码添加到“原始用户迁移”或“修改迁移代码”中。 –

+0

您将需要创建一个新的迁移,然后将该代码放入该迁移 –

0

的解决方案是:

  1. 运行作曲家需要学说/ ddbal
  2. 加我想default(3)更改到role_id column像这样$table->integer('role_id')->index()->unsigned()->nullable()->default(3)->change();
  3. 年底运行php artisan migrate

这解决了它,表格被改变了。