【发布时间】:2017-12-08 08:37:48
【问题描述】:
我问了一个关于 laravel 的 paginate 方法的问题,因为我无法获得所需的输出。我想获取名称列包含特定字符串的所有记录。
无论如何,我得到了整个表格内容+链接立即改变:
小代码sn-p(我尝试了很多不同的想法)
$search = $request['search'];
$usergroups = Usergroups::where('name', 'like', '%' . $search . '%')->paginate(3);
我不太确定,但我认为在我的情况下存在一个不是来自我的代码的问题。如果我输出 $usergroups 我得到这个:
current_page 1
data:
// my data
from 1
last_page 2
next_page_url "http://blabla.de/test?page=2"
path "http://blabla.de/test"
per_page 3
prev_page_url
to 3
total 5
您可以清楚地看到总共有 5 个项目(没错,我预计会得到 5 个项目),并且有 2 页。这也是正确的,因为我已将分页设置为 paginate(3)。
如果我在刀片中输出链接,我会得到如下信息:
但是如果我点击“2” - 进入该分页的最后一页,我不知道为什么,但链接会立即从 1-2 变为 1-7。
无需重新加载页面或任何东西。
因此,在我想更改分页链接之前,我会获得正确数量的项目,但如果我更改为 ?page=2,我会获得表中的所有项目。我不知道为什么,但也许那是 laravel 的错误。我也用 laravel 5.3 (目前是 5.4 )尝试过,但遇到了同样的问题。如果我查看 phpmyadmin 查询日志并手动尝试查询,我也会得到完美的输出。如果我使用 ->get() 而不是 ->paginate();我也得到了我想要的输出。我已经没有头绪了。也许有人知道答案?或者我可以做些什么?如果用户想要搜索特定项目,我不想输出我的整个表格
感谢您的任何建议,对不起,因为我的英语不好!
搜索表格:
<form id="search" action="{{ route("test") }}" method="get">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<p>
<small class="text-muted">Suche durch Stichwörter nach Gruppen!</small>
</p>
<input class="form-control searchbar" name="search" type="text"><br>
<button type="submit" class="btn btn-lg btn-outline"><i class="fa fa-search"></i>Suchen</button>
</form>
路线:
Route::get('test', ['as' => 'test', 'uses' => 'Group\GroupController@test'] );
控制器:
$search = Input::get('search');
$usergroups = Usergroups::where('name', 'like', '%' . $search . '%');
$usergroups = $usergroups->paginate(3);
return view('test.test')->with('category_groups', $usergroups);
分页sn-p:
{{ $usergroups->appends(['search' => request()->query('search')])->links() }}
<div class="row">
@foreach($usergroups as $group)
<div class="col-xs-12 col-sm-6 col-md-4">
<div class="group-style">
<div class="list-group" style="border: none">
<div class="list-group-item">
<h4 class="list-group-item-heading">{{ $group['name'] }}</h4>
<p class="list-group-item-text text-center">
{{ $group['description'] }}
</p>
<br>
</div>
</div>
<div class="list-group">
<a target="_blank" href="{{ $group['link'] }}">
<div class="list-group-footer">
<i class="fa fa-plus"></i> Beitreten!
</div>
</a>
</div>
</div>
</div>
@endforeach
</div>
{{ $usergroups->appends(['search' => request()->query('search')])->links() }}
URL 现在看起来像:
http://bla.bla.com/test?search=Test
【问题讨论】:
-
只是预感:如果未设置页面值默认为 1 会怎样?
page=1 -
如果我在设置页面值之前将其设置为 ?page=1 (因此,如果我将 /test 更改为 /test?page=1 ,则 1-2 分页将变为 1-7。输出保持不变,因为我已经在 ?page=1 上(即使它在 URL 中不可见)
标签: php laravel laravel-5 pagination