2016-06-09 51 views
10

我需要將遷移列類型爲$table->string('text');更改爲文本類型,我試圖用幾種方式來完成此操作,但都沒有工作。是否有可能在一次遷移中完成。我可以猜測刪除列,然後用新類型再次創建它,但是我想知道是否可以在一次遷移中完成它?Laravel遷移將列類型從varchar更改爲longText

回答

12

是的,你可以創建新的遷移和change just one column type

public function up() 
{ 
    Schema::table('sometable', function (Blueprint $table) { 
     $table->text('text')->change(); 
    }); 
} 
+0

你還需要刪除字段?因爲在使用代碼更改列時,我仍然得到「列已存在:1060重複列名稱」。 – NewbieLearner

4

根據Laravel Doc

你可以不喜歡它

Schema::table('yourTable', function (Blueprint $table) { 
    $table->text('text')->change(); 
}); 

一定要加的學說/ DBAL依賴於你的composer.json文件

1

可以使用TABLE遷移。

正如其他帖子中提到的一樣,請務必從您的項目根目錄運行composer install doctrine/dbal

這些都設置了:

php artisan make:migration alter_table_[yourtablenamehere]_change_[somecolumnname] --table=[yourtablenamehere] 

從項目的根。

從文檔:

https://laravel.com/docs/master/migrations#modifying-columns

class AlterTableSomething extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::table('table', function (Blueprint $table) { 
      $table->text('column_name')->change(); 
     }); 
    } 
} 
相關問題