2017-01-24 62 views
2

我有兩個表usersuser_informations。他們通過一對一的關係聯繫在一起。如何更新Laravel的生產數據庫中的數據?

現在我想合併它們並刪除user_informations表,而不會丟失數據庫中的數據或重置整個遷移。

這樣做的最佳方法是什麼?

我的表目前的結構是

users(id, name, password, remember_token, timestamps)

user_informations(id, user_id, first_name, last_name, avatar, description, timestamps)

我要合併first_namelast_name一個字符串,並將其添加到用戶的name領域和移動avatardescription到用戶表。

+0

請提供您的表格結構,同時顯示您到目前爲止所嘗試的內容。 –

+0

將'user_infomations'表格數據添加到'users'表格,而不是刪除'user_infomations'表格。 –

+0

我的意思是如何正確地做到這一點。我做了一個遷移,將兩個列添加到'users'表中,並創建一個合併數據的播種器,然後,另一個遷移將刪除'user_informations'表。但是當我將它移動到服務器並運行'migrate'命令時,它將在運行播種機之前刪除'user_informations'表。 – Jem

回答

0

您可以編寫一個小腳本,它從user_informations獲取數據並將其添加到users表中。喜歡的東西:

User::chunk(1000, function ($users) { 
    foreach ($users as $user) { 
     $user->update($user->user_informations); 
    } 
}); 
+0

我應該在哪裏寫這個?我應該如何處理遷移?我在播種器中寫了一個類似的腳本,但是當我將遷移和播種器移動到服務器時,它會在我運行播種機之前刪除'user_informations'表。由於這種改變需要兩次遷移,一個用於將列添加到'users'表另一個以刪除'user_informations'表。 – Jem

+0

這取決於情況。如果你有數據並且想把它轉移到'users'表中只需要一次,就把代碼放入一個簡單的閉包內部的路由文件中並運行它。然後修復遷移。 –

0

你需要做三個步驟:

  • 您需要爲用戶表遷移,使之包含用戶信息
  • 作出命令循環的用戶並從user_infomations表中獲取值
  • 進行遷移以刪除user_infomations表後,檢查一切正常。