Laravel - 在迁移期间转换数据

时间:2015-08-27 05:00:50

标签: php laravel-5 database-migration

是否可以在迁移期间转换表格的数据?作为一个例子,我想添加一个新列,但是默认值对于现有数据来说已经不够了(新记录的默认值很好,但是现有数据已经​​有一个需要放入其中的结构新领域)。

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

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

所以'等级'不需要按需计算(如果它是一个很长的评论树,它可能是密集的)

可以编写一个计算并保存这些级别值的命令,但感觉就像带有迁移一样。

1 个答案:

答案 0 :(得分:0)

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

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

重新回答答案:

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