数据库迁移Laravel 5.2排列表

数据库迁移Laravel 5.2排列表,laravel,migration,Laravel,Migration,我在顶部有一个create_users_表,带有角色表的外键,但角色表的位置在create_users_表的底部。因此,create_users表无法看到roles表,因为它尚未创建。见附图: 我是否需要重新创建一个users表,以便它出现在roles表的下面 我是否需要重新创建一个users表,以便它在下面显示为 角色表 不能将外键添加到尚不存在的表中。如果要通过迁移来管理数据库,则需要将它们按正确的顺序排列 但是,您也可以将其作为单独的迁移添加,以便 创建用户表 创建角色表 alter u

我在顶部有一个create_users_表,带有角色表的外键,但角色表的位置在create_users_表的底部。因此,create_users表无法看到roles表,因为它尚未创建。见附图:

我是否需要重新创建一个users表,以便它出现在roles表的下面

我是否需要重新创建一个users表,以便它在下面显示为 角色表

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

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

  • 创建用户表
  • 创建角色表
  • alter users表以添加角色id字段和外键
  • 这样,如果需要在项目中期对数据库进行更改,就不必重新安排现有迁移

    我是否需要重新创建一个users表,以便它在下面显示为 角色表

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

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

  • 创建用户表
  • 创建角色表
  • alter users表以添加角色id字段和外键

  • 这样,如果您(例如)需要在项目中期对数据库进行更改,则不必重新安排现有迁移。

    如果这只是项目的开始,并且如果您未使用数据库迁移版本控制,则只需重命名迁移文件名处的日期时间戳即可重新安排迁移。类似这样的操作会将迁移重新安排到所需的顺序。参见我将
    2016\u 08\u 13\u 001252\u create\u roles\u table.php
    的年份更改为
    2014\u 08\u 13\u 001252\u create\u roles\u 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

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


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

    如果这只是项目的开始,并且如果您未使用数据库迁移版本控制,则可以重命名迁移文件名处的日期时间戳以重新安排迁移。类似这样的操作会将迁移重新安排到所需的顺序。参见我将
    2016\u 08\u 13\u 001252\u create\u roles\u table.php
    的年份更改为
    2014\u 08\u 13\u 001252\u create\u roles\u 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

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


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

    是的,我想这会是一个过程,但不是很确定。谢谢。是的,我想这会是一个过程,但我不是很确定。谢谢,谢谢兄弟!您使我免于安装DBAL。这才是我真正需要的。谢谢兄弟!您使我免于安装DBAL。这才是我真正需要的。