如何使用OctoberCMS迁移在现有完整表中添加新的NOT NULL列

时间:2017-01-14 17:56:28

标签: php laravel-5 octobercms

我有一个结构简单的表(id,name和timestamps)。

我需要添加一个slug但是系统已经运行了,我需要数据库中的slug为Unique和NOT NULL(因此禁止使用默认值)。

如何添加迁移文件以添加此列并在迁移文件中填写与slug(name)类似的内容?

public function up() {
    Schema::table('departments', function(Blueprint $table) {
        $table->string('slug');
    });
}

1 个答案:

答案 0 :(得分:0)

在迁移中,您可以通过执行以下操作为列指定默认值:

// ...
$table->string('slug')->default('my-default-slug');
// ...

这将有效地将my-default-slug设置为您运行迁移时departments内已存在的每条记录的值。但是,据我所知,此设置不会阻止对slug被设置为空字符串的任何记录的修改。这就是字符串的全部内容,空字符串仍然是数据库的有效字符串。

有关列修饰符的详细信息,请参阅Laravel docs

修改

根据下面的评论,有一个fine package可用于根据Eloquent模型的另一个属性自动生成slug。