laravel 分页方法链接不存在

eyl*_*lay 4 pagination eloquent laravel-5.5

我正在使用基于用户输入的 eloquent 构建动态查询。

$query = \App\Model::query();
if($this == request('that')){
    $query->where(...); // building dynamic query based on user inputs
}
Run Code Online (Sandbox Code Playgroud)

最后,用户可以在名为count的 html 输入字段中键入每页显示的记录或选中名为all的复选框输入类型,以下代码在后端完成动态查询:

if (request('all')) {
    $result = $query->get();
}else {
    $result = $query->paginate(request('count'));
}
Run Code Online (Sandbox Code Playgroud)

同样在前端,我有以下代码来显示分页链接:

{{$result->links()}}
Run Code Online (Sandbox Code Playgroud)

问题是当用户选择显示我们面临以下错误的所有记录时:

方法链接不存在。

当我们通过get()方法检索对象时,链接方法不可调用。为了不面对此错误,最佳做法是什么?

yrv*_*v16 8

这是因为->get()方法返回集合而不是分页器模型Illuminate\Pagination\LengthAwarePaginator。所以我可以建议你从你的控制器发送一些附加变量,指示你是否需要 execute $result->links()
控制器:

return view('yourView', [showPagination => is_null(request('all'))]);
Run Code Online (Sandbox Code Playgroud)

看法:

@if($showPagination)
   {{$result->links()}}
@endif
Run Code Online (Sandbox Code Playgroud)