Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果为空,则不发布参数_Php_Laravel - Fatal编程技术网

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'));
}