[英]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;
}
我认为您需要更改传递给POST的 route方法 ,并且您的表单将这样命名 ,例如:
<input type="text" name="id[]" />
这样,您可以使用以下命令在控制器中捕获具有多个id的数组:
request()->get('id');
尝试使用:
$arr = explode(',',$id)
他们你将有一个ID数组
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.