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