我发现这个问题与我的Make column not nullable in a Laravel migration非常相似,尽管它已经存在了将近3年,而且肯定不属于Laravel 5。

我的问题是我有一个迁移,该迁移在up函数中修改了列以使其可为空。
现在,在down函数中,我想使其不再不可为空。

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

我可以使用原始SQL来实现,但是如果可能的话,我想使用Laravel方法来实现它...但是我找不到它,可能它也没有在版本5中实现。

最佳答案

要将其重置为不可为空。您可以尝试一下。

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

关于php - 在Laravel 5迁移中使列不可为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33035406/

10-08 21:34