Laravel 10:关联模型分页后如何在视图中正确使用links方法?
问题分析与解决
错误原因
你踩了两个坑:
- 错误地在Book模型实例上调用
links()方法,而links()是Laravel分页实例(LengthAwarePaginator)的专属方法,Book模型本身没有这个方法。 - 在预加载
with()的关联闭包中直接用paginate(),虽然能让$book->reviews成为分页实例,但这种写法不符合Laravel预加载的常规逻辑,容易混淆调用对象。
正确解决方案
方案一:单独查询评论分页(推荐)
把Book查询和评论分页查询分开,逻辑更清晰:
// 控制器代码 $book = Book::findOrFail($id); $reviews = $book->reviews()->latest()->paginate(5);
视图里调用分页导航:
{{ $reviews->links() }}
方案二:修正视图调用(仅适用于单Book场景)
如果要保留原控制器代码,必须针对关联的分页实例调用links():
{{ $book->reviews->links() }}
这种方式只适合单个Book的场景,批量查询Book时会引发逻辑混乱,所以更推荐方案一。
内容的提问来源于stack exchange,提问作者Erfan ss
相关产品推荐
相关产品推荐

