2015-02-16 28 views
5

sto usando il seguente metodo per creare una colonna di database di tipo ENUM nel generatore di schemi:Aggiungi valore predefinito al campo di tipo enum nel generatore di schemi

$table->enum('status', array('new', 'active', 'disabled')); 

mi piacerebbe impostare il suo valore di default per active .
Ho provato a fare questo:

$table->enum('status', array('new', 'active', 'disabled'))->default('active'); 

Ma come si può intuire, ma non imposta il suo valore di default. Sto usando un database MySQL se questo è importante.

risposta

11

Da the MySQL manual:

Se una colonna ENUM è dichiarato per consentire NULL, il valore NULL è un valore legale per la colonna, e il valore predefinito è NULL. Se una colonna ENUM è dichiarata NOT NULL, il suo valore predefinito è il primo elemento dell'elenco di valori consentiti.

Sto assumendo questo significa è necessario impostare 'active' come primo valore, rimuovere la chiamata default(), ed eventualmente impostare manualmente NULL permittance.

+0

Grazie, avrebbe dovuto controllare prima il manuale, pensato che fosse una cosa laravel. Accetterà non appena il limite di tempo mi consente. – Peter

+0

Cheers, felice che sia stato d'aiuto. :) –

+0

Significa rimuovere il permesso 'NULL', non è necessario impostarlo, giusto? – Adam

1

mi sono imbattuto in un problema simile, che è quello che ha funzionato per me:

$table->enum('status', array('active', 'new', 'disabled')); 

Posizionare il valore di default come primo elemento della matrice. active è ora il valore predefinito.

2

uso questo:

$table->enum('status',['new', 'active', 'disabled'])->default('active');