2012-12-10 17 views
16

Ich habe zwei Felder, in denen ich das Zeichenlimit erhöhen muss. Ich lese die Dokumentation durch und zu meiner Überraschung fand ich keine Option dafür. Ist es möglich zu tun? Wenn nicht, wie soll ich das lösen?Ändern Sie die Spaltenlänge im Schema-Builder?

Ich könnte die Spalte löschen und neu mit den richtigen Eigenschaften erstellen, aber ich möchte keine Daten in der Datenbank verlieren.

Antwort

20

Verwendung Raw Queries:

/** 
* Make changes to the database. 
* 
* @return void 
*/ 
public function up() 
{ 
    DB::query('alter table MYTABLE modify MYCOLUMN varchar(new-length)'); 
} 

/** 
* Revert the changes to the database. 
* 
* @return void 
*/ 
public function down() 
{ 
    DB::query('alter table MYTABLE modify MYCOLUMN varchar(old-length)'); 
} 

ersetzen MYTABLE, MYCOLUMN, new-length und old-length.

+0

Das ist perfekt, danke! – qwerty

+0

Es funktioniert in Laravel 3. – killlinuxkill

+0

In Laravel 5.1 musste ich die DB :: -Abfrage zu DB :: -Anweisung ändern. – Waqas

1

Verwenden Sie `` für den Spaltennamen, wenn der Name ein Schlüsselwort für das System ist. Andernfalls erhalten Sie einen "Syntaxfehler oder Zugriffsverletzung".

DB::query("alter table MYTABLE modify `MYCOLUMN` varchar(new-length)"); 
26

Für Laravel 4

DB::update('ALTER TABLE `my_table` MODIFY `my_column` VARCHAR(<new length>)'); 
+0

Ich bin neu bei Laravel 4 ... Wie führe ich diese Update-Aufgabe? – roadev

16

Für Laravel 5:

Schema::table('users', function($table) 
{ 
    $table->string('name', 50)->change(); 
}); 

prüfen docs für weitere Informationen.