Laravel API 连接到客户端数据库
Laravel API Connecting to Client Database
我正在建设 2 个网站,其中一个托管在服务器上,另一个托管在本地主机上,它们都有自己的数据库。服务器上的那个有 API 路由从客户端获取数据并将其插入数据库。我要实现的功能是本地主机上的一个将从自己的数据库中检索数据,然后调用服务器上另一个的 API 路由,然后将其插入到服务器的数据库中。
预期结果:
来自本地数据库的数据通过 API.
插入到服务器的数据库中
实际结果:
服务器正在将数据插入回本地主机数据库。
问题:
有没有办法强制服务器将数据插入它自己的数据库?
代码:
本地主机函数
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
提前致谢
检查根 Laravel 项目文件夹中的 .env
文件,应该是 Server
这是您通常为数据库指定连接字符串的地方。
如果您的两个网站使用不同的数据库和不同的连接启动,它们必须使用各自不同的主机和凭据来连接到数据库。
对于服务器将数据推送到客户端的数据库,这听起来像是一个配置问题..
它成功了,我用 php artisan serve --port=8080
服务于服务器项目并将 guzzle 客户端更改为 localhost:8080
,它运行良好
我正在建设 2 个网站,其中一个托管在服务器上,另一个托管在本地主机上,它们都有自己的数据库。服务器上的那个有 API 路由从客户端获取数据并将其插入数据库。我要实现的功能是本地主机上的一个将从自己的数据库中检索数据,然后调用服务器上另一个的 API 路由,然后将其插入到服务器的数据库中。
预期结果: 来自本地数据库的数据通过 API.
插入到服务器的数据库中实际结果: 服务器正在将数据插入回本地主机数据库。
问题: 有没有办法强制服务器将数据插入它自己的数据库?
代码: 本地主机函数
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
提前致谢
检查根 Laravel 项目文件夹中的 .env
文件,应该是 Server
这是您通常为数据库指定连接字符串的地方。
如果您的两个网站使用不同的数据库和不同的连接启动,它们必须使用各自不同的主机和凭据来连接到数据库。
对于服务器将数据推送到客户端的数据库,这听起来像是一个配置问题..
它成功了,我用 php artisan serve --port=8080
服务于服务器项目并将 guzzle 客户端更改为 localhost:8080
,它运行良好