我有一个使用Postgress数据库的Web应用程序。几个具有自己数据库的基于Web的记帐程序已与Web应用程序集成。必须实现所有数据库的同步。换句话说,如果在一个数据库中进行了某些更改,则所有其他数据库都应同步数据。
我以前从未做过此事,想知道有什么解决方案或方法吗?
应该使用Web API进行同步。
答案 0 :(得分:2)
您可以只使用DB::listen()
来获取所有查询,然后复制每个插入,更新或删除查询。
# app/Providers/AppServiceProvider.php
namespace App\Providers;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Str;
class AppServiceProvider extends ServiceProvider
{
public function register()
{
//
}
public function boot()
{
// Only listens to default connection, no need to worry on it firing on each replication
DB::listen(function ($query) {
if(Str::startsWith($query->sql, ['insert', 'update', 'delete'])) {
DB::connection('connection2')->statement($query->sql, $query->bindings);
DB::connection('connection3')->statement($query->sql, $query->bindings);
DB::connection('connection4')->statement($query->sql, $query->bindings);
}
});
}
}