2016-11-11 83 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

這解決了它,表格被改變了。