【问题标题】:Laravel 5.4 Eloquent and curlLaravel 5.4 Eloquent 和 curl
【发布时间】:2017-04-04 16:12:20
【问题描述】:

Eloquent 查询是否会受到使用 curl 发出的请求的影响?

这就是我的意思,我有这个返回用户信息的控制器方法

class TestController extends Controller
{
    public function test(Request $request)
    {
        $User= User::where('email','user@mail.com')->first();
        return response($User);
}

因此,当我转到浏览器并请求该方法时,它会按预期返回用户信息。现在,当我使用 curl 发送请求时,它返回 NULL。

这是我的卷发:

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);

    $result['content'] = curl_exec($ch);

如果我更改此查询,那么真正奇怪的部分来了:

$User= User::where('email','user@mail.com')->first();

到这里

$User= User::first();

然后再次使用 curl 发送请求,它可以工作。

使用 curl 时,Eloquent 行为似乎受到了影响,我不明白为什么

(顺便说一下 users 表只包含 1 个用户)

更新 在使用 curl 这部分时,我发现了一些更奇怪的东西 $User=User::first() 实际上是从客户端数据库获取用户(我在同一台机器上拥有客户端应用程序和服务器应用程序,但具有不同的 url),而不是从这个 api 正在使用的数据库获取用户,尽管两个应用程序在它们的数据库中都有正确的数据库对应的 .env 文件。我什至将命名空间设置为 API 中的 App/Api/User 和客户端中的 App/User 以避免任何命名空间冲突,但问题仍然存在

【问题讨论】:

    标签: php laravel curl


    【解决方案1】:

    我认为这是因为您没有在 curl 请求中设置内容类型,请尝试以下 curl

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/json',
        'Connection: Keep-Alive'
    ]);
    
    $result['content'] = curl_exec($ch);
    

    【讨论】:

      猜你喜欢
      • 2018-02-21
      • 2017-08-22
      • 2017-10-07
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      • 1970-01-01
      • 2017-10-17
      • 2017-07-06
      相关资源
      最近更新 更多