繁体   English   中英

Laravel-如何将变量传递给WhereIn

[英]Laravel - How to pass variable to WhereIn

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

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

我建议您创建服务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

我认为您需要更改传递给POST的 route方法 ,并且您的表单将这样命名 ,例如:

<input type="text" name="id[]" />

这样,您可以使用以下命令在控制器中捕获具有多个id的数组:

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

尝试使用:

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

他们你将有一个ID数组

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM