Laravel将localhost MySql数据库同步到托管服务器

时间:2018-10-03 06:39:07

标签: javascript php mysql laravel codeigniter

我想与Laravel一起制作离线在线Web应用程序。当用户具有互联网连接时,需要自动同步MySql数据库,否则我将创建一个同步按钮。我尝试了解决方案,但不幸的是我没有找到任何解决方案。

或者我可以进出口吗? 我也尝试过

  

https://github.com/MidwesternInteractive/laravel-db-sync

REMOTE_SYNC_URL=
REMOTE_SYNC_DB_NAME=
REMOTE_SYNC_SSH_USERNAME=
REMOTE_SYNC_SSH_PASSWORD=

1 个答案:

答案 0 :(得分:0)

您不需要任何其他软件包。

将两个数据库(本地数据库和实时数据库)的凭据分别提供给连接数组中的database.php配置文件。

示例:

'my-local-db' => [
  'driver' => 'mysql',
  'host' => env('DB_HOST', '127.0.0.1'),
  'port' => env('DB_PORT', '3306'),
  'database' => env('DB_DATABASE', 'forge'),
  'username' => env('DB_USERNAME', 'forge'),
  'password' => env('DB_PASSWORD', ''),
],

'my-live-db' => [
  'driver' => 'mysql',
  'host' => env('DB_LIVE_HOST', '127.0.0.1'),
  'port' => env('DB_LIVE_PORT', '3306'),
  'database' => env('DB_LIVE_DATABASE', 'forge'),
  'username' => env('DB_LIVE_USERNAME', 'forge'),
  'password' => env('DB_LIVE_PASSWORD', ''),
],

并设置环境变量

现在,例如,您要将表从实时同步到本地

public function sync() {
     // Connect to live database
     $live_database = DB::connection('my-live-db');
     // Get table data from production
     foreach($live_database->table('table_name')->get() as $data){
        // Save data to staging database - default db connection
        DB::table('table_name')->insert((array) $data);
     }
     // Get table_2 data from production
     foreach($live_database->table('table_2_name')->get() as $data){
        // Save data to staging database - default db connection
        DB::table('table_2_name')->insert((array) $data);
     }
  }

希望这会为您提供有关两个数据库同步的基本概念