2015-10-09 15 views
9

Ho trovato questa domanda molto simile alla mia Make column not nullable in a Laravel migration anche se è quasi 3 anni e sicuramente non appartiene al laravel 5colonna Marchio non annullabile in una migrazione laravel 5

Il mio problema è che ho una migrazione che nella funzione up modifica una colonna per renderla nullable. Ora, nella funzione down, voglio renderlo nuovamente non annullabile.

/** 
* Run the migrations. 
* 
* @return void 
*/ 
public function up() 
{ 
    Schema::table('mytable', function(Blueprint $table) { 
     $table->string('mycolumn')->nullable()->change(); 
    }); 
} 

/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
    Schema::table('mytable', function(Blueprint $table) { 
    /* THIS IS WHAT I WOULD EXPECT TO DO 
    THOUGH OF COURSE THE FUNCTION notNullable DOES NOT WORK */ 
     $table->string('mycolumn')->notNullable()->change(); 
    }); 
} 

ho potuto ottenere che l'utilizzo di SQL prime, ma mi piacerebbe farlo utilizzando metodi laravel se è possibile ... ma non riuscivo a trovare, probabilmente non è stato implementato nel anche la versione 5.

+1

Da quello che posso vedere nel codice sorgente, non c'è un opposto di '' 'annullabile()' '', quindi potrebbe essere necessario utilizzare la facciata Db di fare una query crudo. – Amo

+0

Grazie a @Amo, temo che tu abbia ragione. –

risposta

17

Per reimpostarlo su non annullabile. Puoi provare questo.

/** 
* Run the migrations. 
* 
* @return void 
*/ 
public function up() 
{ 
    Schema::table('mytable', function(Blueprint $table) { 
     $table->string('mycolumn')->nullable()->change(); 
    }); 
} 

/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
    Schema::table('mytable', function(Blueprint $table) { 
    /* By default it's NOT NULL */ 
     $table->string('mycolumn')->nullable(false)->change(); // <--- here 
    }); 
} 
2

Di default è NOT NULL, quindi dovresti provare questo.

/** 
* Run the migrations. 
* 
* @return void 
*/ 
public function up() 
{ 
    Schema::table('mytable', function(Blueprint $table) { 
     $table->string('mycolumn')->nullable()->change(); 
    }); 
} 

/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
    Schema::table('mytable', function(Blueprint $table) { 
    /* By default it's NOT NULL */ 
     $table->string('mycolumn')->change(); 
    }); 
} 
+1

Inoltre ho pensato che questo potesse funzionare ma sfortunatamente non ritorna al suo default –

Problemi correlati