2013-10-11 19 views
8

Próba ustawienia migracji, która spowoduje, że moje istniejące pole "aktywne" będzie miało domyślną wartość "1".Aktualizacja programu Laravel Schema Builder Wartość domyślna

widzę w docs mogę używać coś takiego:

$table->integer('active')->default(1); 

ale próbowałem to w moim migracji bez powodzenia, myślę, ponieważ pole już istnieje. Czy istnieje sposób prawidłowego zarządzania istniejącymi polami za pomocą kreatora schematów?

Moja obecna migracja:

public function up() 
{ 
    Schema::table('scores', function($table){ 
     $table->integer('active')->default(1); 
    }); 
} 

Edit:

Z tego, co mam do tej pory przeczytać, to nie można zrobić z konstruktora zapytań. Ale gdy próbuję uruchomić surowego zapytanie:

DB::query("ALTER TABLE `scores` CHANGE COLUMN `active` `active` int(11) NOT NULL DEFAULT '1';"); 

Dostaję „metoda«zapytanie»does not exist błąd”, więc zgaduję, nazwa ta została zmieniona metoda po prostu nie mogę znaleźć to, co została zmieniona na

Odpowiedz

12

Wygląda DB :: zapytania() została zmieniona na DB :: oświadczenie()

to załatwiło sprawę:

DB::statement("ALTER TABLE `scores` CHANGE COLUMN `active` `active` int(11) NOT NULL DEFAULT '1';"); 
+1

Ponieważ nie zmieniają nazwę kolumny zamiast ZMIENIĆ KOLUMNĘ możesz użyć MODIFY COLUMN i pominąć secon d aktywne w wyciągu. Nowe zdanie w następujący sposób: DB :: instrukcja ("ALTER TABLE score MODIFY COLUMN active int (11) NOT NULL DEFAULT" 1 ";"); 'stackoverflow.com/a/14767467/788445 – Jon