【问题标题】:How to add a new NOT NULL column in a existing full table using OctoberCMS migrations如何使用 OctoberCMS 迁移在现有完整表中添加新的 NOT NULL 列
【发布时间】:2017-01-14 17:56:28
【问题描述】:

我有一个结构简单的表(id、名称和时间戳)。

我需要添加一个 slug,但系统已经在运行,我需要数据库中的 slug 是唯一的,而不是 NULL(因此禁止我使用默认值)。

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

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

【问题讨论】:

    标签: php laravel-5 octobercms


    【解决方案1】:

    在您的迁移中,您可以通过以下方式为列指定默认值:

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

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

    有关列修饰符的更多信息,请参阅Laravel docs

    编辑

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

    【讨论】:

    • 我希望添加一个基于名称列的动态生成的 slug。我应该说 slug 列应该是唯一的。
    猜你喜欢
    • 2020-02-03
    • 2013-05-23
    • 2021-05-13
    • 2021-11-11
    • 2018-05-28
    • 1970-01-01
    • 2014-01-16
    • 2011-06-17
    • 1970-01-01
    相关资源
    最近更新 更多