【问题标题】:Laravel - Transform data during migrationLaravel - 在迁移期间转换数据
【发布时间】:2015-11-21 08:15:17
【问题描述】:

是否可以在迁移期间转换表的数据?举个例子,我想添加一个新列,但是默认值对于现有数据是不够的(默认值对于新记录很好,但是现有数据已经​​具有需要放入新字段的结构)。

我希望能够做这样的事情:

Schema::table('comments', function(Blueprint $table) {
    $table->unsignedInteger('level')->default(0);
    $table->text('lineage');
});

foreach (Comments::whereNotNull('parent_id')->get() as $c) {
    $c->level = $c->calculateLevel();
    $c->save();
}

这样“级别”就不必按需计算(如果评论树很长,可能会很密集)

可以编写一个命令来计算并保存这些级别值,但感觉就像迁移时应该发生的事情

【问题讨论】:

    标签: php laravel-5 database-migration


    【解决方案1】:

    事实证明,我在示例中回答了我自己的问题。

    架构更改后,您可以访问对象并使用新字段。

    重申答案:

    Schema::table('comments', function(Blueprint $table) {
        $table->unsignedInteger('level')->default(0);
        $table->text('lineage');
    });
    
    foreach (Comments::whereNotNull('parent_id')->get() as $c) {
        $c->level = $c->calculateLevel();
        $c->save();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-11
      • 2016-04-30
      • 2019-11-18
      • 1970-01-01
      • 2018-06-02
      • 2021-04-11
      • 2014-06-23
      • 1970-01-01
      相关资源
      最近更新 更多