当前位置: 首页 > news >正文

PHP:实现两张无关联表数据的联合分页处理方案

前言

在现代软件开发中,高效地处理数据是至关重要的环节。尤其是在使用 PHP 进行开发时,常常会遇到各种复杂的数据处理需求。其中,实现两张无关联表数据的联合分页处理就是一个具有挑战性的任务。这种需求在很多实际应用场景中都可能出现,例如在管理系统中需要同时展示来自不同数据源的数据,并进行分页以便用户更好地浏览。本文将深入探讨如何使用 PHP 来实现两张无关联表数据的联合分页处理方案,为开发者提供实用的技术指导和解决方案。

解决方案

以下方法需借助 ThinkPHP(TP)框架来完成,并且该方法是为前端提供的接口,用于实现两张无关联表数据的联合分页处理。ThinkPHP 框架以其高效、便捷的开发特性,为开发者提供了强大的工具支持。通过这个接口,前端可以更加方便地获取经过处理后的分页数据,提升用户体验和系统的整体性能。

/* 分类和列表的数据需要合在分页,且先获取分类的数据 
$page 接口或者方法接收的当前获取页数
$limit 接口或者方法接收的每页条数
*/// 构建分类和列表的数据库查询对象 where查询条件可自定义
$type_db = Db::name('bucket_type')->where($where_type)->order('id','desc');
$bucket_db = Db::name('bucket')->where($where_bucket)->order('id','desc');$type_count = $type_db->count();  // 分类数据总条数
$bucket_count = $bucket_db->count();  // 列表数据总条数$count = $type_count + $bucket_count;  // 合并数据总条数
$last_page = ceil($count / $limit);  // 合并数据总条数
$current_page = $page;  // 当前获取第几页的数据// 初始化结果数组
$result = [];
$result['total'] = $count;
$result['last_page'] = $last_page;
$result['current_page'] = $current_page;
$result['data'] = [];$type_last_page = ceil($type_count / $limit);  // 分类总页数
$bucket_last_page = ceil($bucket_count / $limit);  // 列表总页数$result['type_last_page'] = $type_last_page;
$result['bucket_last_page'] = $bucket_last_page;if ($current_page <= $type_last_page) {// 若当前页小于等于分类总页数,获取分类列表// paginate为tp框架自带的分页$type_list = $type_db->paginate(['list_rows'=>$param['limit'],'page'=>$page])->toArray();$result['data'] = $type_list['data'];if (count($type_list['data']) < $limit) {// 若分类列表数据不足,计算还需要的数量$need_count = $limit - count($type_list['data']); // 还需要几条if ($bucket_last_page > 0) {// 获取相应数量的列表并合并到结果中$bucket_list = $bucket_db->paginate(['list_rows'=>$need_count,'page'=>1])->toArray();$result['data'] = array_merge($result['data'], $bucket_list['data']);}}
} else {// 若当前页大于分类总页数,计算所需的列表页$need_page = $current_page - $type_last_page;$need_del_count = 0;if ($type_last_page && $type_last_page < $current_page) {// 计算需要删除的数量$type_list = $type_db->paginate(['list_rows'=> $limit,'page'=> $type_last_page])->toArray();if (count($type_list['data']) < $limit) {$need_del_count = $limit - count($type_list['data']);}}if ($bucket_last_page > 0) {// 获取列表数据$bucket_list = $bucket_db->paginate(['list_rows'=> $limit,'page'=> $need_page])->toArray();if ($need_del_count > 0) {$need_bucket_list = $bucket_db->paginate(['list_rows'=> $limit,'page'=> $need_page + 1])->toArray();$bucket_list['data'] = array_slice($bucket_list['data'], $need_del_count);$need_bucket_list['data'] = array_slice($need_bucket_list['data'], 0, $need_del_count);$bucket_list['data'] = array_merge($bucket_list['data'], $need_bucket_list['data']);}$result['data'] = $bucket_list['data'];}
}
// $result为返回的结果

此方法为个人思路,若在使用过程中发现任何问题,欢迎随时反馈。我们可以共同探讨、相互学习,以实现共同进步和提升。如需转载请注明出处

相关文章:

PHP:实现两张无关联表数据的联合分页处理方案

前言 在现代软件开发中&#xff0c;高效地处理数据是至关重要的环节。尤其是在使用 PHP 进行开发时&#xff0c;常常会遇到各种复杂的数据处理需求。其中&#xff0c;实现两张无关联表数据的联合分页处理就是一个具有挑战性的任务。这种需求在很多实际应用场景中都可能出现&am…...

【单元测试】单元测试介绍

1 单元测试基础 1.单元测试&#xff1a;单元测试又称模块测试&#xff0c;属于白盒测试&#xff0c;是最小单位的测试。模块分为程序模块和功能模块。功能模块指实现了一个完整功能的模块&#xff08;单元&#xff09;&#xff0c;一个完整的程序单元具备输入、加工和输出三个…...

PyQt事件机制及其应用

一、实例前置 一个小闹钟应用 创建主窗口类 首先我们创建了一个名为AlarmClock的类&#xff0c;它继承自QMainWindow。这个类将包含我们的GUI组件和逻辑。 from Alarm_clock import Ui_MainWindowclass AlarmClock(QMainWindow):def __init__(self):super().__init__()# 初始化…...

厦门凯酷全科技有限公司抖音电商服务的卓越典范

在短视频和直播带货迅速崛起的时代&#xff0c;厦门凯酷全科技有限公司&#xff08;以下简称“凯酷全科技”&#xff09;以其专业的服务、创新的精神以及对市场的深刻理解&#xff0c;在抖音电商领域中脱颖而出&#xff0c;成为众多品牌商家信赖的选择。本文将深入探讨凯酷全科…...

vue3水波柱状图 ,实现

效果图 //引用页面 <div style"height: 60px;background-color: #fff;border-radius: 5px;width: 40px;"><WavePercentage:percentage"progress"primary-color"#ffcb7c"secondary-color"#ffcb7c"/></div>import Wa…...

如何在两台 PostgreSQL 服务器之间使用逻辑复制槽进行数据复制

如何在两台 PostgreSQL 服务器之间使用逻辑复制槽进行数据复制 如何在两台 PostgreSQL 服务器之间使用逻辑复制槽进行数据复制环境准备1. 配置主服务器&#xff08;Publisher&#xff09;1.1 修改 postgresql.conf1.2 修改 pg_hba.conf1.3 重启 PostgreSQL 服务1.4 创建逻辑复制…...

System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本

问题1&#xff1a;“/”应用程序中的服务器错误。 System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本。 说明: 执行当前 Web 请求期间&#xff0c;出现未经处理的异常。请检查堆栈跟踪信息&#xff0c;以了解有关该错误以及代码中导致错误的出处的详细…...

【机器人】振动分析和控制工具之Bode图

Bode 图完整介绍 Bode 图由两个部分组成&#xff1a; 幅值图 (Magnitude Plot)&#xff1a;描述系统对不同频率输入信号的增益大小&#xff08;幅值响应&#xff09;。相位图 (Phase Plot)&#xff1a;描述系统输出信号相对于输入信号的相位差。 Bode 图的横轴是频率&#x…...

生成:安卓证书uniapp

地址&#xff1a; https://ask.dcloud.net.cn/article/35777 // 使用keytool -genkey命令生成证书&#xff1a; 官网&#xff1a; keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore ----------------------------------…...

酒店/电影推荐系统里面如何应用深度学习如CNN?

【1】酒店推荐系统里面如何应用CNN&#xff1f;具体过程是什么 在酒店推荐系统中应用卷积神经网络&#xff08;CNN&#xff09;并不是一个常见的选择&#xff0c;因为 CNN 主要用于处理具有空间结构的数据&#xff0c;如图像、音频和某些类型的序列数据。然而&#xff0c;在某…...

【CSS in Depth 2 精译_069】11.3 利用 OKLCH 颜色值来处理 CSS 中的颜色问题(上)

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第四部分 视觉增强技术 ✔️【第 11 章 颜色与对比】 ✔️ 11.1 通过对比进行交流 11.1.1 模式的建立11.1.2 还原设计稿 11.2 颜色的定义 11.2.1 色域与色彩空间11.2.2 CSS 颜色表示法 11.2.2.1 RGB…...

Redis篇-6--原理篇5--单线程模型

1、概述 Redis 采用单线程模型来处理客户端请求&#xff0c;这意味着在任意时刻只有一个命令被执行。这种设计简化了 Redis 的实现&#xff0c;并确保了高并发环境下的数据一致性。尽管 Redis 是单线程的&#xff0c;但它通过高效的内存管理和网络 I/O 操作&#xff0c;仍然能…...

Java版-图论-最小生成树-Prim算法

实现描述 如图&#xff1a; Prim算法的基本思想是从一个顶点开始&#xff0c;逐步构建最小生成树。具体步骤如下&#xff1a; 随机选取一个顶点作为起始点&#xff0c;并将其加入最小生成树的集合中。从该顶点出发&#xff0c;选择一条边连接到其他未被访问的顶点中的最小权…...

Python 基础学习(一)

一.基础语法 注释 Python中单行注释以 # 开头&#xff0c;如下&#xff1a; #!/usr/bin/python3# 第一个注释 print ("Hello, Python!") # 第二个注释多行注释可以用多个 # 号&#xff0c;还有 ‘’’ 和 “”"&#xff1a; #!/usr/bin/python3# 第一个注释…...

vue2使用rtsp视频流接入海康威视摄像头(纯前端)

一.获取海康威视rtsp视频流 海康威视官方的RTSP最新取流格式如下: rtsp://用户名:密码IP:554/Streaming/Channels/101 用户名和密码 IP就是登陆摄像头时候的IP(笔者这里IP是192.168.1.210) 所以笔者的rtsp流地址就是rtsp://用户名:密码192.168.1.210:554/Streaming/Channel…...

利用PHP和GD库实现图片拼接的方法

利用PHP和GD库实现图片拼接的方法主要涉及到加载图片资源、创建目标画布、将图片资源绘制到目标画布上&#xff0c;并最终输出或保存拼接后的图片。以下是实现图片拼接的基本步骤&#xff1a; 加载图片资源&#xff1a; 使用imagecreatefromjpeg()、imagecreatefrompng()或ima…...

自动驾驶领域常用的软件与工具

CarSim&#xff1a;专门针对车辆动力学的仿真软件&#xff0c;能够预测和仿真汽车整车的操纵稳定性、制动性、平顺性、动力性和经济性。CarMaker&#xff1a;德国IPG公司推出的动力学、ADAS和自动驾驶仿真软件&#xff0c;提供精准的车辆本体模型和闭环仿真系统。VTD (Virtual …...

uniapp-内部项目使用文档

uniapp-内部项目使用文档 目录 uniapp-内部项目使用文档阶段1自行实现内容&#xff1a;阶段1问题记录&#xff1a; 阶段2自行实现内容&#xff1a; 阶段3 APP项目介绍及规范阶段4 公共组件方法UseList 列表页面HooksListItem 列表项uni-load-more 列表加载更多组件CardTitle 列…...

ASP .NET Core 中的环境变量

在本文中&#xff0c;我们将通过组织一场小型音乐会&#xff08;当然是在代码中&#xff09;来了解 ASP .NET Core 中的环境变量。让我们从创建项目开始&#xff1a; dotnet new web --name Concert 并更新Program.cs&#xff1a; // replace this: app.MapGet("/"…...

学科竞赛管理系统

文末获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 摘 要 随着国家教育体制的改革&#xff0c;全国各地举办的竞赛活动数目也是逐年增加&#xff0c;面对如此大的数目的竞赛信息&#xff0c;传统竞赛管理方式已经无法满足需求&#xff0c;为了提高效率&am…...

tf_unet 实战应用:从玩具问题到射电天文干扰检测的完整案例

tf_unet 实战应用&#xff1a;从玩具问题到射电天文干扰检测的完整案例 【免费下载链接】tf_unet Generic U-Net Tensorflow implementation for image segmentation 项目地址: https://gitcode.com/gh_mirrors/tf/tf_unet Tensorflow U-Net 是一个通用的图像分割深度学…...

CAJ转PDF终极指南:3步告别知网格式限制,实现跨平台学术自由

CAJ转PDF终极指南&#xff1a;3步告别知网格式限制&#xff0c;实现跨平台学术自由 【免费下载链接】caj2pdf Convert CAJ (China Academic Journals) files to PDF. 转换中国知网 CAJ 格式文献为 PDF。佛系转换&#xff0c;成功与否&#xff0c;皆是玄学。 项目地址: https:…...

MotuBrain:一种用于机器人控制的高级世界动作模型

26年4月来自生数公司MotuBrain团队的论文“MotuBrain: An Advanced World Action Model for Robot Control”。 Motus [5] 建立一种统一的“世界-动作”建模范式&#xff0c;将视频与动作纳入同一个生成式框架中进行建模&#xff1b;借此&#xff0c;策略建模、世界建模、视频生…...

蓝桥杯-2026年C++B组省赛

&#xff08;题目来源于洛谷&#xff0c;省一代码分享&#xff09;P16232 [蓝桥杯 2026 省 B] 青春常数题目背景本站蓝桥杯 2026 省赛测试数据均为洛谷自造&#xff0c;与官方数据可能存在差异&#xff0c;仅供学习参考。题目描述小蓝与蓝桥杯的缘分已经走到了第四个年头。从 2…...

AI智能体集成Active Directory:统一身份管理与安全沙箱实践

1. 项目概述&#xff1a;在Active Directory中为AI智能体安家最近在折腾一个挺有意思的项目&#xff0c;叫agent-directory。简单来说&#xff0c;它能让你的AI智能体&#xff08;Agent&#xff09;像公司里的员工一样&#xff0c;在Windows Active Directory&#xff08;AD&am…...

算法基础(十一)—— 递归树如何看懂分治算法的运行时间

1. 定位导航 前面已经学习了分治思想&#xff1a; 分解 → 解决 → 合并分治算法经常可以写成递归式。 例如归并排序&#xff1a; 先把数组拆成左右两半&#xff1b; 分别排序左右两半&#xff1b; 再合并两个有序数组。它的运行时间可以粗略写成&#xff1a; T(n)2T(n/2)n T(n…...

AI编程助手上下文压缩引擎:降低Token成本60-99%的智能解决方案

1. 项目概述&#xff1a;一个为AI编程工具设计的上下文压缩引擎如果你每天都在用Cursor、Claude Code或者GitHub Copilot这类AI编程助手&#xff0c;那你肯定对“上下文窗口”和“Token消耗”这两个词不陌生。每次你让AI助手“看看这个文件”、“运行一下git status”或者“检查…...

从玩具车到电动车:手把手拆解直流电机,搞懂它为啥能转还能发电

从玩具车到电动车&#xff1a;手把手拆解直流电机&#xff0c;搞懂它为啥能转还能发电 小时候拆过四驱车马达的人都知道&#xff0c;那个嗡嗡作响的小铜线圈藏着某种魔法——通上电池就能让轮子飞转&#xff0c;用手转动轴心居然还能点亮LED。这种神奇的装置就是直流电机&#…...

5分钟掌握HunterPie:提升《怪物猎人:世界》狩猎效率的完整游戏辅助工具指南

5分钟掌握HunterPie&#xff1a;提升《怪物猎人&#xff1a;世界》狩猎效率的完整游戏辅助工具指南 【免费下载链接】HunterPie-legacy A complete, modern and clean overlay with Discord Rich Presence integration for Monster Hunter: World. 项目地址: https://gitcode…...

3个简单步骤彻底解决Dell G15笔记本散热问题:开源温度控制中心完全指南

3个简单步骤彻底解决Dell G15笔记本散热问题&#xff1a;开源温度控制中心完全指南 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 你是否正在为Dell G15笔记本…...