Laravel的新手。我正在尝试使用控制器来匹配URL中发送的服务。
示例网址:
/public/service/cost/2
控制器中的代码是:
public function getServiceCost($id) {
$service = Service::whereIn('id', array($id))->get();
return $service;
}
我希望能够在URL中传递多个ID,如下所示: /公共/服务/成本/ 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
答案 0 :(得分:0)
您好@BillyB需要重新考虑网址结构,您可以使用GET参数传递多个参数。
我建议您创建服务网址:
/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;
}
中有详细记录
答案 1 :(得分:0)
我认为您需要更改路由方法传递给 POST ,您的表单会像这样生成名称,例如:
<input type="text" name="id[]" />
通过这种方式,您可以使用以下命令在控制器中捕获包含多个 ID 的数组:
request()->get('id');
答案 2 :(得分:-2)
尝试使用:
$arr = explode(',',$id)
他们将有一个带有ID的数组