Php 如果为空,则不发布参数
我有一个带有Php 如果为空,则不发布参数,php,laravel,Php,Laravel,我有一个带有minprice和maxprice的价格过滤器表单,当这两个参数都被填充时,它工作正常。但当只填写1时,我得到一个InvalidArgumentException错误。这是由于其中一个参数为空。 如何允许单个参数通过 表格: {{csrf_field()}} 提交 控制器: public function index(Request $request) { $products = product::all(); $pricefilter
minprice
和maxprice
的价格过滤器表单,当这两个参数都被填充时,它工作正常。但当只填写1时,我得到一个InvalidArgumentException
错误。这是由于其中一个参数为空。
如何允许单个参数通过
表格:
{{csrf_field()}}
提交
控制器:
public function index(Request $request)
{
$products = product::all();
$pricefilter = (new product)->newQuery();
if ($request->has(['minprice', 'maxprice']))
{
$pricefilter->where('price', '>=' ,$request->minprice);
$pricefilter->where('price', '<=' ,$request->maxprice);
$products = $pricefilter->get();
}
elseif ($request->has('minprice'))
{
$pricefilter->where('price', '>=' ,$request->minprice);
$products = $pricefilter->get();
}
elseif ($request->has('maxprice'))
{
$pricefilter->where('price', '<=' ,$request->maxprice);
$products = $pricefilter->get();
}
return view ('index', compact('products'));
}
公共功能索引(请求$Request)
{
$products=product::all();
$pricefilter=(新产品)->newQuery();
如果($request->has(['minprice','maxprice']))
{
$pricefilter->where('price','>=',$request->minprice);
$pricefilter->where('price','=',$request->minprice);
$products=$pricefilter->get();
}
elseif($request->has('maxprice'))
{
$pricefilter->where('price','让我们试着在这附近打扫一下房子
public function index () {
if(request()->has('minprice') || request()->has('maxprice') {
$filter = Product::query();
if(request()->has(['minprice', 'maxprice']) {
$filtered = $filter->whereBetween('price', [request('minprice', 'maxprice']);
} else if(!request('maxprice')) {
$filtered = $filter->where('price', '>=' request('minprice'));
} else if (!request('minprice')) {
$filtered = $filter->where('price', '<=', request('maxprice'));
}
$products = $filtered->get();
} else {
$products = Product::all();
}
return view ('index', compact('products'));
}
公共功能索引(){
if(request()->has('minprice')| | request()->has('maxprice')){
$filter=Product::query();
if(request()->has(['minprice','maxprice'])){
$filtered=$filter->whereBetween('price',[request('minprice','maxprice');
}如果(!请求('maxprice'),则为else{
$filtered=$filter->where('price','>='request('minprice');
}如果(!request('minprice'),则为else{
$filtered=$filter->where('price','更改if循环以使用isset方法有效。
我还将循环重新格式化为注释中建议的user3532758
user3532758:删除第一个if。将两个elseif更改为ifs。删除所有$products=$pricefilter->get();并将其包含在返回视图的正上方
公共功能索引(请求$Request)
{
$product=products::all();
$pricefilter=(新产品)->newQuery();
如果(设置($request->minprice))
{
$pricefilter->where('price','>=',$request->minprice);
}
if(设置($request->maxprice))
{
$pricefilter->where('price',在第一个if子句中,您有$products=…
,在其他子句中,您有$product=…
。这是某种打字错误吗?在无效参数异常中会出现什么错误???@AlekosDordas您好,已修复,但仍然存在相同的问题remains@zahidhasanemon因为两个参数都通过错误标志第二个zahid的注释是nullI。但是你实际上可以去掉第一个if
。将两个elseif
s更改为if
s。删除所有$products=$pricefilter->get();
并将其包含在返回视图的正上方。也许可以看看这些更改后它是否对您有效?有一件事,您必须注意(虽然不是很重要)您的Product::all()
语句。无论是否有筛选器,都将调用该语句。因此,当您进行筛选时,它甚至比加载所有结果时花费的时间更长。“让我们试着在这里打扫一下房间。”-这不是一个可以接受的答案描述。请解释您所做的更改及其原因。这本质上是一个带有醒目标题的代码转储。您好,我收到一个语法错误解析错误:语法错误,意外“;”
与$filter=Product::query()相关;
public function index () {
if(request()->has('minprice') || request()->has('maxprice') {
$filter = Product::query();
if(request()->has(['minprice', 'maxprice']) {
$filtered = $filter->whereBetween('price', [request('minprice', 'maxprice']);
} else if(!request('maxprice')) {
$filtered = $filter->where('price', '>=' request('minprice'));
} else if (!request('minprice')) {
$filtered = $filter->where('price', '<=', request('maxprice'));
}
$products = $filtered->get();
} else {
$products = Product::all();
}
return view ('index', compact('products'));
}
public function index(Request $request)
{
$product = products::all();
$pricefilter = (new products)->newQuery();
if (isset($request->minprice))
{
$pricefilter->where('price', '>=' ,$request->minprice);
}
if (isset($request->maxprice))
{
$pricefilter->where('price', '<=' ,$request->maxprice);
}
$product = $pricefilter->get();
return view ('index', compact('product'));
}