【问题标题】:Laravel - How to pass variable to WhereInLaravel - 如何将变量传递给 WhereIn
【发布时间】:2018-07-01 13:17:47
【问题描述】:

Laravel 新手。我正在尝试使用控制器来匹配与 URL 中发送的内容相匹配的服务。

示例网址:

/public/service/cost/2

控制器中的代码是:

public function getServiceCost($id) {

    $service = Service::whereIn('id', array($id))->get();

    return $service;
}

我希望能够像这样在 URL 中传递多个 id: /public/service/cost/1,2,3

如果我硬编码测试,它工作正常。

public function getServiceCost($id) {
  $service = Service::whereIn('id', array(1, 2, 3))->get();
  return $service;
}  

我需要做些什么才能将 URL 中的参数传递到 whereIn 以便它返回我在 URL 中传递的内容?

如果我使用

/public/service/cost/2,3

它只返回 id 2 的数据。

我将函数改成使用Request $request,但仍然只显示一个结果:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Service;

class ServiceController extends Controller
{ 
    public function getServiceCost2(Request $request) {
        $service = Service::whereIn('id', array($request->get('id')))->get();

        return $service;
    }
}

使用的网址是:

public/service/cost?id=1,2

【问题讨论】:

标签: php laravel-5.3


【解决方案1】:

您好@BillyB,您需要重新考虑您的URL 结构,您可以使用 GET 参数传递多个参数。

我建议您创建服务 URL:

/public/service/cost?id[]=1&id[]=2&id[]=3

控制器中的代码是:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

.....

public function getServiceCost(Request $request) {

    $service = Service::whereIn('id',$request->get('id'))->get();

    return $service;
}

https://laravel.com/docs/5.3/requests 上有详细记录

【讨论】:

  • /public/service/cost?id[]=1&id[]=2&id[]=3 也没有用。 Route::get('/service/cost/','ServiceController@getServiceCost2');
  • 是的,它看起来不错。只需访问 /service/cost?id[]=1&id[]=2&id[]=3 否则没有意义。
  • 还是不行。试图自学 Laravel,这样我可能会错过一些东西。我可以链接 git 存储库吗?
  • 是的,我可以看看。
【解决方案2】:

我认为您需要将您的 路由方法 更改为 POST,并且您的表单会生成一个像这样的 name,例如:

&lt;input type="text" name="id[]" /&gt;

这样做,您可以在控制器中捕获具有多个 ids 的数组,使用:

request()->get('id');

【讨论】:

    【解决方案3】:

    尝试使用:

    $arr = explode(',',$id)
    

    他们将有一个带有 id 的数组

    【讨论】:

      猜你喜欢
      • 2020-01-11
      • 1970-01-01
      • 2017-11-09
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 2015-06-15
      • 2021-06-16
      相关资源
      最近更新 更多