1. Go to this page and download the library: Download clarkewing/legacy-sync library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
return [
/*
|--------------------------------------------------------------------------
| Database connections
|--------------------------------------------------------------------------
|
| Here you should specify the connections used for syncing.
| These should reference connection names defined in your config/database.php file.
|
*/
'connections' => [
'legacy' => 'legacy', // References the 'legacy' connection in database.php
'new' => 'sqlite', // References the 'sqlite' connection in database.php
],
/*
|--------------------------------------------------------------------------
| Legacy database sync mapping
|--------------------------------------------------------------------------
|
| Here you should specify the mapping and defaults used for syncing
| the legacy and new databases of your app.
| Expected format:
| 'table_name' => [
| 'map' => [
| 'legacy_column_name' => 'new_column_name',
| // Columns which share the same name in databases are implicitly mapped 1:1.
| // One-sided fields which aren't explicitly mapped and don't have a default are omitted from the sync.
| ],
| // Defaults for optional fields that exist only in the new or legacy table
| 'defaults' => [
| 'reputation' => 0,
| ],
| // Exclude fields that don't exist in one database to avoid errors
| 'exclude' => [
| 'legacy' => ['missing_from_legacy'],
| 'new' => ['missing_from_new'],
| ],
|
*/
'mapping' => [
'users' => [
'primary_key' => 'id',
'map' => [
'birthdate' => 'birth_date',
],
],
],
];
use ClarkeWing\LegacySync\Facades\LegacySync;
use ClarkeWing\LegacySync\Enums\SyncDirection;
// Sync a specific table from legacy to new
LegacySync::syncTable('users', SyncDirection::LegacyToNew);
// Sync a specific table from new to legacy
LegacySync::syncTable('users', SyncDirection::NewToLegacy);
// Sync all configured tables from legacy to new
LegacySync::syncAll(SyncDirection::LegacyToNew);
// Sync all configured tables from new to legacy
LegacySync::syncAll(SyncDirection::NewToLegacy);
use ClarkeWing\LegacySync\Facades\LegacySync;
use ClarkeWing\LegacySync\Enums\SyncDirection;
// Sync a specific user with ID 123 from legacy to new
LegacySync::syncRecord('users', 123, SyncDirection::LegacyToNew);
// Sync a specific user with ID 456 from new to legacy
LegacySync::syncRecord('users', 456, SyncDirection::NewToLegacy);
use ClarkeWing\LegacySync\Enums\SyncDirection;
use ClarkeWing\LegacySync\Facades\LegacySync;
it('does not perform real syncing when faked', function () {
// Prevent any actual syncing work
LegacySync::fake();
expect(LegacySync::isFake())->toBeTrue();
// These calls are intercepted and do nothing
LegacySync::syncAll(SyncDirection::LegacyToNew);
LegacySync::syncTable('users', SyncDirection::NewToLegacy);
LegacySync::syncRecord('users', 123, SyncDirection::LegacyToNew);
});
use ClarkeWing\LegacySync\Facades\LegacySync;
LegacySync::fake();
// For example, a feature test that triggers a sync via a command
$this->artisan('legacy:sync legacy_to_new')
->assertSuccessful();