我在顶部有一个create_users_table,并且有一个外键到角色表,但是角色表的位置在create_users_table的底部。那么发生的事情是create_users表无法看到角色表,因为它尚未创建。见附图:
我是否需要重新创建一个用户表,以便它会出现在角色表的下方?
答案 0 :(得分:3)
我是否需要重新创建一个用户表,以便它可以在下面显示 角色表?
您无法将外键添加到尚不存在的表中。如果要通过迁移来管理数据库,则需要按正确的顺序进行管理。
但是,您也可以将其添加为单独的迁移,以便您拥有
这样,您就不必重新排列现有的迁移,例如需要在项目中期对数据库进行更改。
答案 1 :(得分:1)
如果它只是项目的开始,如果您未使用数据库迁移版本控制,您可以重命名迁移文件名中的日期时间戳以重新排列迁移。这样的事情会将迁移重新安排到所需的顺序。看到我将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
和/或<div class="container-fluid text-center">
<div class="row hero-image-container vertical-align">
<img src="../../static/images/house.jpg" class="img-responsive">
<h1 class="hero-image-address">
<i class="hero-location-icon ion-ios-location" ariahidden="true"></i> Address Here
</h1>
<div class="hero-image-after"></div>
</div>
</div>
。
如果您正在运行迁移验证?
迁移是与数据库相关的事情,并不意味着删除所有表并在每次需要进行更改时重新创建。如果数据库处于活动状态,或者您已完成主要数据库设计,则可以使用版本控制。以这种方式进行迁移的目的之一(日期时间顺序,每次只迁移新的顺序)是只对所创建的旧迁移进行更改。