【问题标题】:Laravel get query stringLaravel 获取查询字符串
【发布时间】:2016-12-08 18:53:25
【问题描述】:

我有以下网址 http://project.su/?invitee=95

首先我想检查 url 中的 invitee,如果 url 有 invitee 然后获取值。

我尝试过的(控制器):

if(!empty($request->get('invitee'))){
   $user->invitee = $request->get('invitee');
}

以下代码不起作用。

我想将invitee 结果(id)存储在数据库中。

谢谢。

【问题讨论】:

  • 你应该使用$_GET['invitee'],因为这是一个查询字符串,不是 Laravel 路由的一部分。

标签: php laravel


【解决方案1】:

判断输入值是否存在:

if ($request->has('invitee')) {
       $user->invitee = $request->input('invitee');
}

如果值存在且不是空字符串,则 has 方法返回 true:

【讨论】:

  • 这仅适用于 URL 参数,不适用于查询字符串。
  • 我完全不同意@TheFallen
  • 此方法适用于我的查询字符串。顺便说一句,谢谢@Depzor :)
【解决方案2】:

就 Laravel 5.7 而言,检索查询参数的首选方法是

if( $request->has('invitee') ) {
    $request->query('invitee');
}

如果您无权访问 $request,则使用辅助函数

request()->query('invitee');

【讨论】:

【解决方案3】:

在 laravel 5.7 中,我们也可以使用request()->invitee。通过使用它,我们可以同时获取 URL 路径参数和查询参数。假设我们有以下网址

http://localhost:8000/users/{id}?invitee=95

要读取idinvitee,我们可以使用

$id  ✔
$invitee ✖ - Invalid
request()->id ✔
request()->invitee ✔

【讨论】:

    【解决方案4】:

    检查invitee参数是否存在:

    if($request->has('invitee')) {
        // ...
    }
    

    获取invitee的值:

    $invitee = $request->input('invitee');
    

    【讨论】:

      【解决方案5】:

      您可以通过以下方式获得输入:

      $invitee = Input::get('invitee');
      

      5.*以上的*

      $invitee = $request->input('invitee');
      

      或者

      $invitee = Request::input('invitee');
      

      【讨论】:

        【解决方案6】:

        你在任何地方打电话给$user->save()吗?您应该调用$user->save() 来实际保存数据。

        如果您担心设置不正确,您可以随时在示例的第二行之后调用dd($user); 进行检查,这样您就可以看到$user 对象中设置了哪些属性。

        您也可以将!empty($request->get('invitee')) 替换为$request->has('invitee')

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-02-15
          • 2011-07-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-08
          • 2018-05-09
          相关资源
          最近更新 更多