Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.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 参数太少,无法运行函数\Http\Request::has(),已传递0_Php_Laravel - Fatal编程技术网

Php 参数太少,无法运行函数\Http\Request::has(),已传递0

Php 参数太少,无法运行函数\Http\Request::has(),已传递0,php,laravel,Php,Laravel,我见过许多类似的问题,但大多数答案看起来很复杂,似乎与我的问题不太相似。再说一次,我是拉雷维尔的新手,需要最简单的解释 我不想在视图中显示信息,只要我搜索就显示 我的控制器 public function index(Request $request) { $transactions = UserTransaction::query(); $userId = request()->get('userId'); $price = request()->get('

我见过许多类似的问题,但大多数答案看起来很复杂,似乎与我的问题不太相似。再说一次,我是拉雷维尔的新手,需要最简单的解释

我不想在视图中显示信息,只要我搜索就显示

我的控制器

public function index(Request $request)
{
    $transactions = UserTransaction::query();
    $userId = request()->get('userId');
    $price = request()->get('price');
    $type = request()->get('type');
    $status = request()->get('status');

    $ordering = request()->get('ordering');
    if($userId){
        $transactions->where('userId' , $userId);
    }
    if ($price) {
        $transactions->where('price' , $price);
    }
    if ($type) {
        $transactions->where('type' , $type);
    }
    if ($status) {
        $transactions->where('status' , $status);
    }

    return view('admin.transaction.index',[
        'transactions' => $transactions->paginate(5)->appends($request->except('page')),
        'stats' => $stats
    ]);
}
我的刀片

@if( $transactions->count() > 0 && request()->has() )
     @foreach($transactions as $transaction)
         {{ $transaction->id }}
         {{ optional($transaction->user)->full_name }}
         {{ $transaction->type }}
      @endforeach
@endif
我得到这个错误


我认为您正在寻找隐藏视图,直到用户搜索任何一个字段

@if( $transactions->count() > 0 &&collect($request->all())->filter()->isNotEmpty())
如果您想从检查中忽略页面,则可以使用Exception

collect($request->except('page'))->filter()->isNotEmpty()
最好在一个过滤器值被填充之前不要执行查询,因为您不希望以任何方式在视图中显示它

public function index(Request $request)
{
   
    $userId = request()->get('userId');
    $price = request()->get('price');
    $type = request()->get('type');
    $status = request()->get('status');

    $ordering = request()->get('ordering');
    $transactions=[];
    if(collect($request->all())->filter()->isNotEmpty()){
        
        $transactions = UserTransaction::query();
    if($userId){
        $transactions->where('userId' , $userId);
    }
    if ($price) {
        $transactions->where('price' , $price);
    }
    if ($type) {
        $transactions->where('type' , $type);
    }
    if ($status) {
        $transactions->where('status' , $status);
    }
     $transactions->paginate(5)->appends($request->except('page'))
    }
        
        
    

    return view('admin.transaction.index',[
        'transactions' =>$transactions,
        'stats' => $stats
    ]);
}

另外,您可以在控制器中指定变量,而不是在多个位置重复
collect($request->except('page'))->filter()->isNotEmpty()
,您应该在控制器中检查是否输入了数据。如果不是,则为
$transactions
返回空值

public function index(Request $request)
{
    if(count($request->all()) > 0) {
        $transactions = UserTransaction::query();
        $userId = request()->get('userId');
        $price = request()->get('price');
        $type = request()->get('type');
        $status = request()->get('status');

        $ordering = request()->get('ordering');
        if($userId){
            $transactions->where('userId' , $userId);
        }
        if ($price) {
            $transactions->where('price' , $price);
        }
        if ($type) {
            $transactions->where('type' , $type);
        }
        if ($status) {
            $transactions->where('status' , $status);
        }

        $transactions= $transactions->paginate(5)->appends($request->except('page'))
    } else {
        $transactions = null;
    }

    return view('admin.transaction.index',[
        'transactions' => $transactions,
        'stats' => $stats
    ]);
}

然后在您的视图中,只需检查
$transactions->count()>0

您应该将参数传递给request()->has()。就像request()->has('userId')。在blade@if($transactions->count()>0&&request()->has())中,检查有关如何在
request
对象上使用的文档。我可以使用Laravel技巧将
user
转换为
all
?我可以将user转换为all是什么意思?@if($transactions->count()>0&&request()->has('all'))