我現在有我的數據庫的新結構,但我需要導入新格式的舊數據。出於這個原因,我想使用Laravel播種機,但我需要以某種方式連接到舊數據庫並進行選擇查詢,並告訴播種機如何將數據放入新數據庫。從現有的數據庫Laravel種子數據庫
這可能嗎?
我現在有我的數據庫的新結構,但我需要導入新格式的舊數據。出於這個原因,我想使用Laravel播種機,但我需要以某種方式連接到舊數據庫並進行選擇查詢,並告訴播種機如何將數據放入新數據庫。從現有的數據庫Laravel種子數據庫
這可能嗎?
配置您的laravel應用程序以使用兩個mysql連接(How to use multiple database in Laravel),一個用於新數據庫,另一個用於舊數據庫。
我會假像它old
和new
。
在您的種子從舊數據庫中讀取並寫入新的。
$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');
甚至一個進度條(可以訪問命令行方式)知道你是進口的這點。
謝謝@phaberest,不幸的是我錯過了一些東西。我已經做了第二個連接(mysql_old),並將其名稱放在新的DB:connection('mysql_old')中。所有()它給我調用未定義的方法Query \ Builder :: all()。我已經嘗試使用select(),我把一個print_r($ old_users);這裏出現了奇怪的部分。它打印出整個MysqlConnection對象,但在配置部分名稱爲'mysql_old',但數據庫與'mysql'連接錯誤。 –
確保你沒有在'config/database.php'中引用任何'.env'變量,因爲它們優先於任何其他設置。你發現我......它必須是'get()'而不是'all()':D – phaberest
謝謝@phaberest! –
嘗試: 例子:
php artisan iseed my_table
php artisan iseed my_table,another_table
這個包的問題是我們想要創建播種機的表我們必須告訴它 在我的情況下,我想爲所有表創建一個播種機,並且此包失敗實現這一目標。 如果我錯過了一些東西,請指教 – Gardezi
我認爲最好的方法是從舊的數據庫工具,如phpMyAdmin的導出數據,修改數據,以適應新的數據庫,然後上傳它。 –
通過修改你在編輯器中的意思? –