【问题标题】:Method links do not exist on Laravel paginationLaravel 分页上不存在方法链接
【发布时间】:2018-08-22 07:47:19
【问题描述】:
我正在尝试实现分页,在我添加 sortByDesc() 以及我雄辩的查询之前,它工作得非常好。
web.php(路由文件)
Route::get('/', function(){
$posts = Post::simplePaginate(5)->sortByDesc("post_id");
//sortByDesc("post_id") this causes the problem
}
当我在指定视图中使用{{ $posts->links() }} 准备分页视图时,出现以下错误-
方法链接不存在
如果我从查询中删除排序条件,它会完美运行。
这种行为背后的原因是什么?
【问题讨论】:
标签:
php
laravel
laravel-pagination
【解决方案1】:
尝试将排序放在查询而不是分页上:
Post::orderBy('post_id', 'desc')->simplePaginate(5);
【解决方案2】:
延伸到@RossWilson 所说的内容。
sortBy是集合函数,不是eloquent函数,正确的eloquent函数是orderBy。
另外,查看simplePaginate() 就像您正在执行get(), first(), find()。
你会先下 get 还是 order 呢? ...如果您想订购一个集合(使用sortBy),也许会得到,但由于simplePaginate 不会返回与get() 相同的集合,sortby 不起作用。并且可能会弄乱分页对象/集合。