我想与Laravel一起制作离线在线Web应用程序。当用户具有互联网连接时,需要自动同步MySql数据库,否则我将创建一个同步按钮。我尝试了解决方案,但不幸的是我没有找到任何解决方案。
或者我可以进出口吗? 我也尝试过
REMOTE_SYNC_URL=
REMOTE_SYNC_DB_NAME=
REMOTE_SYNC_SSH_USERNAME=
REMOTE_SYNC_SSH_PASSWORD=
答案 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);
}
}
希望这会为您提供有关两个数据库同步的基本概念