2016-06-09 49 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(); 
     }); 
    } 
} 
相关问题