我不确定迁移是否是最佳解决方案,但我会解释我的问题......
我需要运行一个例程来填充数据库中的新列,基本上这个例程将获取所有没有值执行函数的记录,这些记录很受欢迎......
此脚本只会使用一次,在我添加默认为null的列后,添加列后会填充字段......
注意:该表已有记录
达到预期效果的最佳途径是什么?
我试过了:
public function up()
{
$allCategories = Category::where('slug', null)->get();
foreach($allCategories as $singleCategory ){
$singleCategory->update([
'slug' => Category::makeSlug( $singleCategory->name, $singleCategory->parent_id)
]);
}
}
但这不起作用
答案 0 :(得分:1)
我弄清楚为什么它没有填充......忘记将该字段标记为模型上的细丝..
抱歉,初学者错误,rsrs
答案 1 :(得分:1)
您应该能够在新迁移中向新字段添加数据。我不确定这是否是最好的方式,但我之前见过这样的事情:
public function up()
{
Schema::table('my_table', function (Blueprint $table) {
$table->string('my_column')->nullable();
});
$this->updateData();
}
private function updateData()
{
$allCategories = Category::where('slug', null)->get();
foreach($allCategories as $singleCategory) {
$singleCategory->update([
'slug' => Category::makeSlug($singleCategory->name, $singleCategory->parent_id)
]);
}
}
假设您的类别模型已命名并且Category::makeSlug()
存在,则应更新您的null
slugs。