You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Nova如何展示百万级行资源?单资源禁用COUNT(*)分页统计

解决Laravel Nova大表COUNT(*)超时问题(仅针对特定资源)

针对500万行的InnoDB表,Laravel Nova默认分页时执行的count(*)查询会超时,要仅禁用该资源的统计行为、保留上下页分页,直接改用simplePaginate即可——它不会触发总条数统计查询。

具体实现步骤

在对应的Nova资源类(比如App\Nova\QueueArticle.php)中添加以下方法:

/**
 * 设置资源的分页选项
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
protected function paginationOptions(Request $request)
{
    return [
        'perPage' => $this->perPageOptions()[0], // 沿用默认的每页条数
        'simple' => true, // 启用简单分页(不统计总条数)
    ];
}

或者也可以通过重写索引查询的方式强制启用简单分页:

/**
 * 构建索引页的查询逻辑
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Illuminate\Database\Eloquent\Builder  $query
 * @return \Illuminate\Database\Eloquent\Builder
 */
public static function indexQuery(Request $request, $query)
{
    $query = parent::indexQuery($request, $query);
    
    // 告诉Nova使用简单分页
    $request->merge(['simple_pagination' => true]);
    
    return $query;
}

效果说明

修改后,该资源的Nova索引页会:

  • 不再执行select count(*) as aggregate from queue_articles查询,彻底解决超时问题
  • 分页控件仅显示「上一页」「下一页」按钮,不再展示总页数、当前页位置等依赖总条数的内容
  • 正常加载展示资源数据,满足索引页的基本使用需求

内容的提问来源于stack exchange,提问作者Michael Love

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 02:57:30