Laravel 10 Scout+Algolia实现count与分页方法报错求助
Laravel 10 Scout 分页与总数统计解决方案
问题原因
getTotalCount方法在Laravel Scout的新版本(含Laravel 10配套的Scout版本)中已被移除,该方法仅存在于旧版本(如Laravel 8的Scout)中,因此调用时会抛出方法不存在的错误。
解决方案
Laravel 10 Scout的paginate()方法返回的是LengthAwarePaginator实例,该实例本身已封装了总记录数、分页信息等,无需额外调用废弃方法:
修正后的代码
if(empty($page)) { $returnedData = User::search($key)->get(); // 获取全部数据 } else { $returnedData = User::search($key) ->paginate($rowsPerPage, null, null, $page); // 获取指定页的数据 $totalRowsCount = $returnedData->total(); // 直接从分页器实例获取总条数 }
单独获取搜索总数(无需分页数据)
如果只需要统计匹配搜索条件的总记录数,不需要获取分页数据,可以直接使用count()方法:
$totalRowsCount = User::search($key)->count();
补充说明
LengthAwarePaginator实例除了total()方法外,还提供了currentPage()、lastPage()、perPage()等常用分页方法,可直接满足前端分页组件的需求。- 你的环境版本(Laravel 10.34.2 + Algolia PHP客户端3.4)完全支持上述方法,无需调整额外依赖。
内容的提问来源于stack exchange,提问作者Petro Gromovo
相关产品推荐
相关产品推荐

