是否可以在迁移期间转换表格的数据?作为一个例子,我想添加一个新列,但是默认值对于现有数据来说已经不够了(新记录的默认值很好,但是现有数据已经有一个需要放入其中的结构新领域)。
我希望能够做到这样的事情:
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();
}
所以'等级'不需要按需计算(如果它是一个很长的评论树,它可能是密集的)
我可以编写一个计算并保存这些级别值的命令,但感觉就像带有迁移一样。
答案 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();
}