Like my case, you are currently working on postgresql which the old DB in in mysql. Which tester the current posgre DB. I cant made that DB as my migration destination. This I why I need multiple DB configuration.
Here simple thing I did.
* Configure database setting(config/database.php) to defined mutiple DB.
return [ 'default' => env('DB_CONNECTION', 'pgsql'), 'fetch' => PDO::FETCH_ASSOC, 'connections' => [ 'pgsql' => [ 'driver' => 'pgsql', 'host' => env('DB_HOST'), 'database' => env('DB_DATABASE'), 'username' => env('DB_USERNAME'), 'password' => env('DB_PASSWORD'), 'charset' => env('DB_CHARSET', 'utf8'), 'prefix' => env('DB_PREFIX', ''), 'schema' => env('DB_SCHEMA', 'core'), ], /* * START - * Migration Tesd DB */ 'migration' => [ // My Postgre DB Destination 'driver' => 'pgsql', 'host' => 'localhost' 'database' => 'dest_db', 'username' => 'myuser, 'password' => 'MyPaswordd', 'charset' => env('DB_CHARSET', 'utf8'), 'prefix' => env('DB_PREFIX', ''), 'schema' => env('DB_SCHEMA', 'core'), ], 'mysql' => [ // Source Mysql DB Data. 'driver' => 'mysql', 'host' => '192.168.101.17', 'port' => 3306, 'database' => 'src_db', 'username' => 'myuser', 'password' => 'mypassword', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', //'timezone' => env('DB_TIMEZONE', '+00:00'), 'strict' => env('DB_STRICT_MODE', false), ], ], ];
While Working on migration script. I learn to use the Console feature of laravel.
$users = DB::connection('mysql') ->select('SELECT * FROM users ' . 'limit 10' // For testing I put limit ); foreach($users as $user){ // Create as object since "setConnection" none static $myuser = new \App\Model\App\Users(); // Store the user to PSQL. // Assume the old and new table are same field names $myuser->setConnection('migration') ->store($user); }
No comments:
Post a Comment