2016-06-09 13 views
10

Ich muss mit Migration Spalte Typ von $table->string('text'); zu einem Texttyp ändern, ich habe versucht, das auf verschiedene Arten zu tun, aber keiner von ihnen funktioniert. Ist es möglich, dies in einer Migration zu tun? Ich könnte raten, die Spalte fallen zu lassen und sie dann mit neuem Typ neu zu erstellen, aber ich frage mich, ob es möglich ist, es in einer Migration zu tun?Laravel Migrationen ändern einen Spaltentyp von Varchar zu LongText

Antwort

12

Ja, können Sie neue Migration erstellen und change just one column type:

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

tun Sie immer noch das Feld fallen müssen? weil ich immer noch bekomme "Spalte existiert bereits: 1060 doppelten Spaltennamen", wenn Sie Ihren Code verwenden, um eine Spalte zu ändern. – NewbieLearner

4

Nach Laravel Doc

Sie können es wie

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

sicher sein, die Lehre/dbal hinzufügen Abhängigkeit zu Ihrer composer.json Datei

1

Es ist möglich mit einer TABLE-Migration zu arbeiten.

Wie in anderen Posts erwähnt, stellen Sie sicher, dass composer install doctrine/dbal von Ihrem Projektstamm ausgeführt wird.

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

aus dem Projekt root:

Diese sind mit aufgebaut.

Aus der Dokumentation:

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(); 
     }); 
    } 
}