我有一个结构简单的表(id,name和timestamps)。
我需要添加一个slug但是系统已经运行了,我需要数据库中的slug为Unique和NOT NULL(因此禁止使用默认值)。
如何添加迁移文件以添加此列并在迁移文件中填写与slug(name)
类似的内容?
public function up() {
Schema::table('departments', function(Blueprint $table) {
$table->string('slug');
});
}
答案 0 :(得分:0)
在迁移中,您可以通过执行以下操作为列指定默认值:
// ...
$table->string('slug')->default('my-default-slug');
// ...
这将有效地将my-default-slug
设置为您运行迁移时departments
内已存在的每条记录的值。但是,据我所知,此设置不会阻止对slug被设置为空字符串的任何记录的修改。这就是字符串的全部内容,空字符串仍然是数据库的有效字符串。
有关列修饰符的详细信息,请参阅Laravel docs。
修改强>
根据下面的评论,有一个fine package可用于根据Eloquent模型的另一个属性自动生成slug。