数据库迁移Laravel 5.2排列表

时间:2016-08-13 00:30:31

标签: laravel migration

我在顶部有一个create_users_table,并且有一个外键到角色表,但是角色表的位置在create_users_table的底部。那么发生的事情是create_users表无法看到角色表,因为它尚未创建。见附图:

enter image description here

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

2 个答案:

答案 0 :(得分:3)

  

我是否需要重新创建一个用户表,以便它可以在下面显示   角色表?

您无法将外键添加到尚不存在的表中。如果要通过迁移来管理数据库,则需要按正确的顺序进行管理。

但是,您也可以将其添加为单独的迁移,以便您拥有

  1. 创建用户表
  2. 创建角色表
  3. 更改用户表以添加role_id字段和外键
  4. 这样,您就不必重新排列现有的迁移,例如需要在项目中期对数据库进行更改。

答案 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>

如果您正在运行迁移验证?

迁移是与数据库相关的事情,并不意味着删除所有表并在每次需要进行更改时重新创建。如果数据库处于活动状态,或者您已完成主要数据库设计,则可以使用版本控制。以这种方式进行迁移的目的之一(日期时间顺序,每次只迁移新的顺序)是只对所创建的旧迁移进行更改。