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

Laravel多类别数据的分页查询与合并实现需求

解决Laravel多类型数据合并分页问题

最优方案:直接用whereIn+paginate

如果三类数据仅QUESTION_TYPE不同,无其他独立查询条件,直接用whereIn包含目标类型后调用paginate即可,数据库层面直接处理分页,性能最优:

// 控制器代码
$questionTypes = ['类型1', '类型2', '类型3']; // 替换为你的实际类型值
$questionChecks = QuestionCheck::whereIn('QUESTION_TYPE', $questionTypes)
    ->orderBy('created_at', 'desc') // 按需添加排序规则
    ->paginate(10); // 10为每页条数,可按需修改

return view('你的视图名', compact('questionChecks'));

视图中直接使用Laravel自带分页渲染:

{{ $questionChecks->links() }}

进阶方案:多查询union后分页

如果三类数据各自有不同查询条件(比如除类型外还有其他筛选规则),可以用union合并三个查询构造器,再统一分页:

// 分别定义三类数据的查询构造器
$queryType1 = QuestionCheck::where('QUESTION_TYPE', '类型1')
    ->where('status', 1); // 示例额外条件
$queryType2 = QuestionCheck::where('QUESTION_TYPE', '类型2')
    ->where('created_at', '>=', now()->subWeek()); // 示例额外条件
$queryType3 = QuestionCheck::where('QUESTION_TYPE', '类型3')
    ->where('is_active', true); // 示例额外条件

// 合并查询并分页
$questionChecks = $queryType1->union($queryType2)->union($queryType3)
    ->orderBy('created_at', 'desc')
    ->paginate(10);

return view('你的视图名', compact('questionChecks'));

这种方式依然是数据库层面分页,性能远优于手动合并后分页。

兜底方案:手动合并集合后封装分页实例

如果前两种方案不适用(比如三类数据来自不同关联查询,无法用union合并),可以手动合并查询结果,再封装成Laravel的分页对象:

use Illuminate\Pagination\LengthAwarePaginator;

$page = request()->get('page', 1);
$perPage = 10;

// 获取三类数据的集合
$collection1 = QuestionCheck::where('QUESTION_TYPE', '类型1')->get();
$collection2 = QuestionCheck::where('QUESTION_TYPE', '类型2')->get();
$collection3 = QuestionCheck::where('QUESTION_TYPE', '类型3')->get();

// 合并集合
$mergedCollection = $collection1->merge($collection2)->merge($collection3);
// 按页码截取数据
$slicedData = $mergedCollection->slice(($page - 1) * $perPage, $perPage)->values();

// 封装成分页对象
$questionChecks = new LengthAwarePaginator(
    $slicedData,
    $mergedCollection->count(),
    $perPage,
    $page,
    ['path' => LengthAwarePaginator::resolveCurrentPath()]
);

return view('你的视图名', compact('questionChecks'));

注意:该方案会先查询所有数据再分页,数据量大时性能会受影响,优先选用前两种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:55:22