You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel:点击Blade按钮实现本地数据库同步至线上数据库

本地数据库同步至线上数据库完整实现方案需求

我希望点击Blade页面中的按钮,将本地数据库同步至线上数据库,目前网上找到的方案都无效。

我已经完成的配置:

  • 更新了database.php,添加了本地(local)和服务器(server)的数据库连接凭证
  • 配置了对应的.env环境变量

以下是已有的配置代码和不完整的控制器实现:

1. database.php 配置

'local' => [
    'driver' => 'mysql',
    'url' => env('DATABASE_URL'),
    'host' => env('LOCAL_DB_HOST', '127.0.0.1'),
    'port' => env('LOCAL_DB_PORT', '3306'),
    'database' => env('LOCAL_DB_DATABASE', 'forge'),
    'username' => env('LOCAL_DB_USERNAME', 'forge'),
    'password' => env('LOCAL_DB_PASSWORD', ''),
    'unix_socket' => env('LOCAL_DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
    ]) : [],
],
'server' => [
    'driver' => 'mysql',
    'url' => env('DATABASE_URL'),
    'host' => env('SERVER_DB_HOST', '127.0.0.1'),
    'port' => env('SERVER_DB_PORT', '3306'),
    'database' => env('SERVER_DB_DATABASE', 'forge'),
    'username' => env('SERVER_DB_USERNAME', 'forge'),
    'password' => env('SERVER_DB_PASSWORD', ''),
    'unix_socket' => env('SERVER_DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
    ]) : [],
],

2. .env 配置

SERVER_DB_CONNECTION=server
SERVER_DB_HOST=127.0.0.1
SERVER_DB_PORT=3306
SERVER_DB_DATABASE=sync_db
SERVER_DB_USERNAME=root
SERVER_DB_PASSWORD=

LOCAL_DB_CONNECTION=local
LOCAL_DB_HOST=127.0.0.1
LOCAL_DB_PORT=3306
LOCAL_DB_DATABASE=sync_db
LOCAL_DB_USERNAME=root
LOCAL_DB_PASSWORD=

3. 不完整的控制器代码

// Connect to local database
return  $local_database = DB::connection('local-db')->table('table_name');
// Get table data from production
foreach ($local_database->table('table_name')->get() as $data) {
    // Save data to staging database - default db connection
    DB::table('table_name')->insert((array) $data);
    // This query can do only one time for multiple time we have to do
    DB::table('table_name')->insertOrUpdate((array) $data);
    // This query also update column only, if you do some changes in 
    //previous data it will not sync for that i dont know this query is 
    //correct or not but it worked.
    DB::table('table_name')->delete((array) $data);
    DB::table('table_name')->insertOrIgnore((array) $data);
}

现寻求完整可行的同步实现方案,要求支持点击Blade页面按钮触发,能正确处理新增、更新、删除数据的同步。


内容的提问来源于stack exchange,提问作者swapnil mane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 19:30:53