【发布时间】:2017-06-08 00:39:22
【问题描述】:
我试图弄清楚如何在 Laravel 5.2 的迁移中处理结构和数据相关的变化。 目前,我只是在对数据库进行结构更改后更改现有数据。 但这似乎与版本控制代码冲突。
一个简单的例子
owner_id 列应添加到 teams 表中。简单迁移,没问题。之后,所有现有团队都应该获得这样的 id。因此,我也将其放入迁移中:
foreach ($teams as $team) {
// get the first user of this team over a many-to-many-relationship-table `team_user`
$team->owner_id = $team->users->first()->id;
...
}
乍一看还不错。
几天后提交,我决定在提到的关系表中添加一个透视列role。我添加了迁移,并在团队模型中添加了这样的内容:
public function users() {
return $this->belongsToMany(...)->withPivot('role');
}
由此产生的问题
如果我现在想完全刷新本地数据库,第一次迁移时会出错。那是因为它调用了 $team->users,但在数据库的这种状态下,role 尚不可用,因此方法调用失败。这就像版本控制和数据库迁移之间的转换。
有没有干净的解决方案?
提前非常感谢, 理查德
【问题讨论】:
标签: php laravel version-control migration