2017-02-09 1 views
1

Die Dokumentation sagt nichts über die Änderung des Datentyps bei Migrationen aus.Laravel - So ändern Sie den Spaltentyp (smallInteger => string)

Ich habe diese Spalte in meiner DB-Tabelle

$table->smallInteger('driverslicensetype')->nullable(); 

und Ich spare vierstellige Zahlen, aber wenn die Zahl beginnt mit 0 (Null) zum Beispiel 0230 werden als 230 in DB gespeichert werden . Und das ist falsch.

Jetzt möchte ich diesen Spaltendatentyp von SmallInteger zu Varchar ändern.

Wie kann ich dies durch Migrationen tun?

Antwort

1

Um das Schema zu ändern Funktion zu verwenden, müssen Sie Lehre DBAL:

composer require doctrine/dbal 

Jetzt können Sie change() verwenden:

public function up() 
{ 
    Schema::table('foo', function (Blueprint $table) { 
     $table->string('driverlicensetype', 4)->nullable()->change(); 
    }); 
} 

public function down() 
{ 
    Schema::table('foo', function (Blueprint $table) { 
     $table->smallInteger('driverlicensetype')->nullable()->change(); 
    }); 
} 

Wenn Sie es vorziehen, die Roh-Ansatz (oder, wenn Ihr SQL ist restriktiver , wie wenn driverlicensetype ein Fremdschlüssel), verwenden DB::statement:

public function up() 
{ 
    DB::statement('ALTER TABLE foo ...'); 
} 
// ... 
+0

Ich habe diesen Fehler: '[Doctrine \ DBAL \ DBALException] Unbekannte Datenbank Typ enum angefordert, Doctrine \ DBAL \ Platforms \ MySQL57Platform kann es nicht unterstützen. ' – lewis4u

+0

@ lewis4u Bitte stellen Sie dies als eine neue Frage mit dem entsprechenden Code. – bishop

Verwandte Themen