Laravel API连接到客户端数据库

时间:2020-08-31 02:44:32

标签: php mysql laravel api guzzle

我正在构建2个网站,其中一个将托管在服务器上,另一个将托管在localhost上,它们都有自己的数据库。服务器上的一个具有API路由,可从客户端获取数据并将其插入数据库。我要实现的功能是,本地主机上的一个将从其自己的数据库中检索数据,然后在服务器上调用另一个数据库的API路由,然后将其插入服务器的数据库中。

预期结果: 来自本地数据库的数据通过API插入到服务器的数据库中。

实际结果: 服务器正在将数据插入回localhost数据库。

问题: 有没有一种方法可以强制服务器将数据插入到它自己的数据库中?

代码: 本地主机功能

public function Sync (){
    $payload = t_worksheet::all()->toArray();
    $client = new Client();
    $res = $client->request('POST', 'http://localhost/cal-work/public/api/sync', ['form_params' => 
    ['payload' => $payload]]);
}

服务器功能

public function sync (Request $request) {
    $payload = $request->payload;
    foreach ($payload as $item) {
        $target = new t_worksheet_server;
        $target->name = $item['name'];
        $target->details = $item['details'];
        $target->approved_by = $item['approved_by'];
        $target->save();
    }

    return response()->json('success', 200);
}

服务器API路由

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

Route::post('/sync', 'SyncController@sync');

本地.env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=ws-local
DB_USERNAME=root
DB_PASSWORD=12345678

服务器.env

DB_CONNECTION=mysql
DB_HOST=db4free.net
DB_PORT=33060
DB_DATABASE=ws-server
DB_USERNAME=ckaryuusai
DB_PASSWORD=12345678

预先感谢

2 个答案:

答案 0 :(得分:0)

在您的Laravel项目根文件夹中检查.env文件,该文件应为Server 通常在此指定数据库的连接字符串。

如果您的两个网站都使用不同的数据库和不同的连接启动,则它们必须使用各自不同的主机和凭据来连接到数据库。

对于服务器将数据推送到客户端的数据库,这听起来像是配置问题。

答案 1 :(得分:0)

工作正常,我使用php artisan serve --port=8080服务于服务器项目,并将耗时客户端更改为localhost:8080,工作正常

相关问题