2016-08-13 117 views
0

我有一个create_users_table顶部和外键的角色表,但角色表的位置是在create_users_table的底部。那么,create_users表会看不到角色表,因为它尚未创建。见所附图片:数据库迁移Laravel 5.2排列表

enter image description here

我需要重新建立一个用户表,以便它将出现下面的角色表?

回答

1

如果它只是项目的开始,并且如果您是不使用数据库迁移版本,但您可以重命名迁移文件名中的日期时间时间戳以重新排列迁移。像这样的东西会重新安排迁移到所需的顺序。看到我将2016_08_13_001252_create_roles_table.php的年份更改为2014_08_13_001252_create_roles_table.php

2014_08_13_001252_create_roles_table.php 
2014_10_12_000000_create_users_table.php 
2014_10_12_100000_create_password_resets_table.php 
2016_08_08_005720_create_messages_table.php 

迁移以文件名的日期时间顺序运行。每次运行只运行新的迁移。所以,如果您对文件进行重新命名这样的更改,则需要删除数据库并重新创建,然后运行迁移。

有时这样做之后,你可能需要在项目 composer dump-autoload和/或php artisan clear-compiled运行下面的命令。

如果您正在运行migrations verisoning?

迁移是与数据库相关的东西,它并不意味着丢弃所有的表格,并且每次需要进行更改时都会重新创建。如果数据库是活动的,或者如果您已完成主要数据库设计,则可以使用版本控制。以这种方式进行迁移的目的之一(日期时间顺序,并且每次仅迁移新的顺序)是只对所创建的旧迁移进行更改。

+1

谢谢兄弟!你从安装DBAL中拯救了我。这就是我真正需要的。 – Rbex

3

我需要重新创建一个用户表,以便它会出现在 角色表下吗?

您不能将外键添加到尚不存在的表中。如果你想通过迁移来管理你的数据库,你需要把它们放在正确的顺序。

然而,你也可以将其添加为一个单独的迁移,让你有

  1. 创建用户表
  2. 创建角色表
  3. ALTER用户表中添加ROLE_ID场和外键

这样你不必重新安排现有的迁移,如果你eg需要对数据库中期项目进行更改。

+0

是的,我认为这将是过程,但并不确定。谢谢。 – Rbex