2016-08-13 422 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