Đây là câu trả lời đầy đủ cho người đọc trong tương lai. Lưu ý rằng điều này chỉ có thể có trong Laravel 5+.
Trước hết bạn sẽ cần gói học thuyết / dbal :
composer require doctrine/dbal
Bây giờ trong di chuyển của bạn, bạn có thể làm điều này để làm cho cột không thể:
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();
});
}
Bạn có thể tự hỏi làm thế nào để hoàn nguyên hoạt động này. Đáng buồn là cú pháp này không được hỗ trợ:
// Sadly does not work :'(
$table->integer('user_id')->unsigned()->change();
Đây là cú pháp đúng để hoàn nguyên việc di chuyển:
$table->integer('user_id')->unsigned()->nullable(false)->change();
Hoặc, nếu bạn thích, bạn có thể viết một truy vấn thô:
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;');
}
Hy vọng bạn sẽ thấy câu trả lời này hữu ích. :)