2016-09-21 78 views
2

我現在有我的數據庫的新結構,但我需要導入新格式的舊數據。出於這個原因,我想使用Laravel播種機,但我需要以某種方式連接到舊數據庫並進行選擇查詢,並告訴播種機如何將數據放入新數據庫。從現有的數據庫Laravel種子數據庫

這可能嗎?

+0

我認爲最好的方法是從舊的數據庫工具,如phpMyAdmin的導出數據,修改數據,以適應新的數據庫,然後上傳它。 –

+0

通過修改你在編輯器中的意思? –

回答

0

配置您的laravel應用程序以使用兩個mysql連接(How to use multiple database in Laravel),一個用於新數據庫,另一個用於舊數據庫。

我會假像它oldnew

在您的種子從舊數據庫中讀取並寫入新的。

$old_user = DB::connection('old')->table('users')->get(); 

foreach ($old_users as $user) { 
    DB::connection('new')->table('users')->insert([ 
     'name'  => $user->name, 
     'email' => $user->email, 
     'password' => $user->password, 
     'old_id' -> $user->id 
     // ... 
    ]); 
} 

確保添加信息,同時播種像$this->command->info('Users table seeded');甚至一個進度條(可以訪問命令行方式)知道你是進口的這點。

+0

謝謝@phaberest,不幸的是我錯過了一些東西。我已經做了第二個連接(mysql_old),並將其名稱放在新的DB:connection('mysql_old')中。所有()它給我調用未定義的方法Query \ Builder :: all()。我已經嘗試使用select(),我把一個print_r($ old_users);這裏出現了奇怪的部分。它打印出整個MysqlConnection對象,但在配置部分名稱爲'mysql_old',但數據庫與'mysql'連接錯誤。 –

+0

確保你沒有在'config/database.php'中引用任何'.env'變量,因爲它們優先於任何其他設置。你發現我......它必須是'get()'而不是'all()':D – phaberest

+0

謝謝@phaberest! –

1

嘗試: 例子:

php artisan iseed my_table 
php artisan iseed my_table,another_table 

訪問:https://github.com/orangehill/iseed

+0

這個包的問題是我們想要創建播種機的表我們必須告訴它 在我的情況下,我想爲所有表創建一個播種機,並且此包失敗實現這一目標。 如果我錯過了一些東西,請指教 – Gardezi