2015-10-09 17 views
9

Tôi đã tìm thấy câu hỏi này rất giống với khai thác Make column not nullable in a Laravel migration mặc dù nó là gần 3 tuổi và nó chắc chắn không thuộc về Laravel 5Make cột không nullable trong một di chuyển Laravel 5

Vấn đề của tôi là tôi có một sự chuyển đổi mà trong hàm up, nó sửa đổi một cột để làm cho nó không có giá trị. Bây giờ, trong hàm down tôi muốn làm cho nó không nullable một lần nữa.

/** 
* 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(); 
    }); 
} 

tôi có thể đạt được điều đó sử dụng SQL thô, nhưng tôi muốn làm điều đó bằng các phương pháp Laravel nếu có thể ... nhưng tôi không thể tìm thấy nó, có lẽ nó đã không được thực hiện nó trong phiên bản 5.

+1

Từ những gì tôi có thể thấy trong mã nguồn, không có sự đối lập với '' 'nullable()' '', vì vậy bạn có thể cần sử dụng mặt tiền Db để thực hiện truy vấn thô. – Amo

+0

Cảm ơn @Amo, tôi e rằng bạn đúng. –

Trả lời

17

Để đặt lại thành không thể vô hiệu. Bạn có thể thử điều này.

/** 
* 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

Theo mặc định NOT NULL của nó, vì vậy bạn nên thử điều này.

/** 
* 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

Tôi cũng nghĩ rằng điều này có thể làm việc nhưng tiếc là nó không trở về mặc định của nó –