นี่คือคำตอบที่สมบูรณ์สำหรับผู้อ่านในอนาคต โปรดทราบว่านี่เป็นไปได้เฉพาะใน Laravel 5+
ก่อนอื่นคุณต้องมีหลักคำสอน /แพ็คเกจdbal :
composer require doctrine/dbal
ตอนนี้ในการย้ายข้อมูลของคุณคุณสามารถทำได้เพื่อทำให้คอลัมน์เป็นโมฆะ:
public function up()
{
Schema::table('users', function (Blueprint $table) {
// change() tells the Schema builder that we are altering a table
$table->integer('user_id')->unsigned()->nullable()->change();
});
}
คุณอาจสงสัยว่าจะยกเลิกการดำเนินการนี้อย่างไร น่าเศร้าที่ไวยากรณ์นี้ไม่รองรับ:
// Sadly does not work :'(
$table->integer('user_id')->unsigned()->change();
นี่คือไวยากรณ์ที่ถูกต้องเพื่อย้อนกลับการโยกย้าย:
$table->integer('user_id')->unsigned()->nullable(false)->change();
หรือถ้าคุณต้องการคุณสามารถเขียนแบบสอบถามแบบดิบ:
public function down()
{
/* Make user_id un-nullable */
DB::statement('UPDATE `users` SET `user_id` = 0 WHERE `user_id` IS NULL;');
DB::statement('ALTER TABLE `users` MODIFY `user_id` INTEGER UNSIGNED NOT NULL;');
}
หวังว่าคุณจะพบคำตอบนี้มีประโยชน์ :)