首页 > 解决方案 > 调用另一个 laravel 项目的 API

问题描述

我有两个 laravel 项目。其中一个有 API

我正在尝试使用 API 获取数据。

public function getSyncOrders() {
    $orders = Invoice::where('status', 0)->get();
    return response()->json([
        'data' => [
            'orders'                => $orders
        ]
    ], 200);      
}

我正在尝试在其他 laravel 项目中获取数据。

public function syncOrders() {
    if(auth()->check()){
        Order::truncate();

        $curl = curl_init();

        curl_setopt_array($curl, array(
            CURLOPT_URL => "http://project1.net/api/sync-orders",
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 600,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => "GET"
        ));

        $response = curl_exec($curl);
        $err = curl_error($curl);

        curl_close($curl);

        if ($err) {
            //echo "cURL Error #:" . $err;
        } else {
            echo $response;
        }
    }
    else{
        return redirect('/');
    }
}

但我得到错误:

SQLSTATE [42S02]:未找到基表或视图:1146 表 'project2.invoice' 不存在(SQL:select * from invoice where status= 0)

项目 1 在数据库中有表invoice,而项目 2orders在数据库中有表。

如果我在浏览器中使用 url http://project1.net/api/sync-orders,它会返回数据。

我需要帮助来修复 curl 请求,以便项目 2 不会在其自己的数据库中执行代码和搜索,而是从 API 获取数据。

标签: phplaravelapilaravel-5.1

解决方案


更改项目 2 解决了这个DB_DATABASE问题configenvDB_DATABASE2


推荐阅读