如何将列更改为" not null"在Laravel 5?

时间:2015-05-16 04:20:28

标签: mysql laravel laravel-5

以下是一些示例代码:

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

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::table('orders', function(Blueprint $table)
    {
        $table->integer('user_id')->unsigned()->change();
    });
}

第一部分很有效。基本上,我采用现有的user_id列并对其进行修改以使其可以为空。效果很好。

但是,当我运行migrate:rollback时,该列保持可空,并且我有一个不完美的上/下迁移关系。什么是解决这个问题的最佳实践解决方案?

1 个答案:

答案 0 :(得分:2)

我建议这样做的唯一方法是运行DB::statement()方法。类似于以下内容

public function down() {
    DB::statement('ALTER TABLE `orders` MODIFY `user_id` INTEGER UNSIGNED NOT NULL;');
}