2016-06-09 18 views
10

Ho bisogno di cambiare con il tipo di colonna di migrazione $table->string('text'); in un tipo di testo, ho provato a farlo in alcuni modi, ma nessuno di essi ha funzionato. È possibile farlo in un'unica migrazione. Potrei indovinare rilasciare la colonna e quindi crearla di nuovo con un nuovo tipo, ma mi chiedo se è possibile farlo in un'unica migrazione?Le migrazioni di Laravel cambiano un tipo di colonna da varchar a long.

risposta

12

Sì, è possibile creare nuova migrazione e change just one column type:

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

avete ancora bisogno di abbandonare il campo? perché sto ancora ricevendo "Colonna esiste già: 1060 Nome colonna duplicato" quando si utilizza il codice per cambiare una colonna. – NewbieLearner

4

Secondo Laravel Doc

Si può fare come

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

assicurarsi di aggiungere la dottrina/dbal dipendenza dal tuo file composer.json

1

È possibile eseguire una migrazione TABLE.

Come menzionato in altri post, assicurati di eseguire composer install doctrine/dbal dalla radice del progetto.

Questi sono istituiti con:

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

dalla radice del progetto.

dalla documentazione:

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