thinkphp:分组查询(多条相同列的数据只展示一条)

news2024/11/19 9:30:12

例子:数据库中有trans_num、subinventory_from、transaction_type、creation_date有相同值,在查询该数据库使,只展示这几个值相同的一条

效果:

限制之前

限制之后

 

代码 

限制前,后端代码

public function select_inhouse(){
    $page = input('post.page', 1); // 当前页码,默认为1
    $pageSize = input('post.pageSize', 10); // 每页显示的数据条数,默认为10
    $data['info'] = db::table('inv_transactions_all')
    ->where('trans_num', 'like', 'ZR%')
    ->order('creation_date DESC')
    ->select();
    // 格式化时间
    foreach ($data['info'] as &$item) {
        $item['creation_date'] = date('Y-m-d H:i:s', $item['creation_date']);
    }
    echo json_encode($data);
}

 限制后,后端代码

        首先定义一个子查询(Subquery),使用field()指定要查询的字段,并使用group()方法按指定字段进行分组。然后,在主查询中使用这个子查询,并使用table([$subQuery => 't'])将其作为表$t来引用。最后执行主查询并返回结果。

public function select_inhouse() {
    $page = input('post.page', 1);
    $pageSize = input('post.pageSize', 10);
    $subQuery = db::table('inv_transactions_all')
        ->field('trans_num, subinventory_from, transaction_type, creation_date')
        ->where('trans_num', 'like', 'ZR%')
        ->order('creation_date DESC')
        ->group('trans_num, subinventory_from, transaction_type, creation_date')
        ->buildSql();
    $data['info'] = db::table([$subQuery => 't'])
        ->select();
    // 格式化时间
    foreach ($data['info'] as &$item) {
        $item['creation_date'] = date('Y-m-d H:i:s', $item['creation_date']);
    }
    echo json_encode($data);
}

前端代码

<template>
	<view>
		<!--新增-->
		<image class='img' :src="add" @tap='add_inhouse'></image>
		<!-- 搜索框 -->
		<view class="top">
			<view class="search">
				<view class="search_in">
					<image :src="search"></image>
					<input type="text" placeholder="请输入工单信息" placeholder-style="color:#CCCCCC"
						@confirm="search_order" />
				</view>
			</view>
		</view>
		<!-- 主干内容 -->
		<view class="item_info" v-for="(item, index) in info.slice(0, (pageNum-1) * pageSize + pageSize)" :key="index">
			<view class="all_content" :data-id="item.trans_num" @tap="detail_inhouse">
				<view class="all_position">
					<!-- 第一行 -->
					<view class="line1">
						<!-- 单号 -->
						<view class="line1_left">
							{{item.trans_num}}
						</view>
						<view class="line1_right">
							{{item.created_by}}
						</view>
					</view>
					<view class="line2">
						<!-- 供应商名称 -->
						<view class="line2_item">
							交易类型:{{item.transaction_type}}
						</view>
						<view class="line2_item">
							仓库名称:{{item.subinventory_from}}
						</view>
						<view class="line2_item">	
							创建时间:{{item.creation_date}}
						</view>
					</view>
				</view>
			</view>
		</view>

		<!-- 加载更多 -->
		<view class="load_more" v-if="info.length >= pageNum * pageSize" @tap="loadMore">
			加载更多
		</view>

	</view>
</template>

<script>
	export default {
		data() {
			return {
				search: getApp().globalData.icon + 'index/search.png',
				add: getApp().globalData.icon + 'index/index/add.png',
				info: [],
				pageNum: 1,
				pageSize: 20
			}
		},
		methods: {
			//查询杂项入库的详情页
			detail_inhouse(e){
				console.log(e.currentTarget.dataset.id)
				// uni.navigateTo({
				// 	// url: '../detail_inhouse/detail_inhouse?trans_num='+,
				// })
			},
			//新增采购入库
			add_inhouse(){
				uni.navigateTo({
					url: '../add_inhouse/add_inhouse',
				})
			},
			loadMore() {
				this.pageNum++;
				this.requestData();
			},
			requestData() {
				uni.request({
					url: getApp().globalData.position + 'Warehouse/select_inhouse',
					data: {
						page: this.pageNum,
						pageSize: this.pageSize
					},
					header: {
						"Content-Type": "application/x-www-form-urlencoded"
					},
					method: 'POST',
					dataType: 'json',
					success: res => {
						if (res.data.info.length > 0) {
							this.info = this.info.concat(res.data.info);
						} else {
							// 没有更多数据
							// 可以在界面上显示相应提示
						}
					},
					fail(res) {
						console.log("查询失败") 
					}
				});
			}
		},
		onLoad() {
			this.requestData();
		}
	}
</script>

<style>
	/* 主体内容 */
	.all_content {
		margin-top: 25rpx;
		/* border: 1px solid black; */
		width: 100%;
		background-color: #ffffff;
		display: flex;
		justify-content: center;
	}

	.all_position {
		width: 92%;
		/* border: 1px solid red; */
	}

	.line1 {
		display: flex;
		width: 100%;
		padding: 20rpx 0;
		border-bottom: 4rpx solid #e5e5e5;
	}

	.line1_left {
		width: 50%;
	}

	.line1_right {
		width: 50%;
		text-align: right;
	}

	.line2 {
		/* border: 1px solid red; */
		padding: 20rpx 0 20rpx 0;
	}

	.line2_item {
		/* border: 1px solid red; */
		padding: 10rpx 0;
	}

	/* 背景色 */
	page {
		background-color: #F0F4F7; 
	}

	/* 悬浮按钮 */
	.img {
		float: right;
		position: fixed;
		bottom: 6%;
		right: 2%;
		width: 100rpx;
		height: 100rpx;
	}

	/* 搜索框 */
	.search {
		display: flex;
		align-items: center;
		justify-content: center;
		background-color: #ffffff;
		/* border:1px solid black; */
		width: 100%;
		height: 100rpx;
	}

	.search .search_in {
		display: flex;
		align-items: center;
		justify-content: space-between;
		padding: 0 20rpx;
		box-sizing: border-box;
		height: 70rpx;
		width: 90%;
		background-color: #F0F4F7;
		border-radius: 10rpx;
		/* border:1px solid black; */
	}

	.search_in image {
		height: 40rpx;
		width: 45rpx;
		margin-right: 20rpx;
	}

	.search input {
		width: 100%;
	}

	/* 加载更多 */
	.load_more {
		text-align: center;
		padding: 20rpx 0;
		color: #999999;
		font-size: 28rpx;
	}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/852030.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用威胁建模进行DevSecOps实践丨IDCF

作者&#xff1a; 姚圣伟&#xff08;现就职天津引元科技 天津市区块链技术创新中心&#xff09; 研发效能&#xff08;DevOps&#xff09;工程师认证学员 一、从DevOps到 DevSecOps DevOps 最开始最要是强调开发和运维的协作与配合&#xff0c;至今&#xff0c;已不仅仅涉…

第3章 数据和C

本章介绍以下内容&#xff1a; 关键字&#xff1a;int 、short、long、unsigned、char、float、double、_Bool、_Complex、_Imaginary 运算符&#xff1a;sizeof() 函数&#xff1a;scanf() 整数类型和浮点数类型的区别 如何书写整型和浮点型常数&#xff0c;如何声明这些类型的…

在windows中使用parLapply函数执行并行计算

目录 1-lapply()函数介绍&#xff1a; 例子1&#xff1a; 例子2&#xff1a; 例子3&#xff1a; 2-在Windows使用并行计算&#xff0c;使用parLapply()函数 2.1-并行计算的准备阶段&#xff1a; 2.2-parLapply()函数介绍 2.3-使用parLapply()函数编写执行并行计算 2.4-…

领航优配:医药股发力拉升,双成药业等涨停,科源制药等大涨

医药股8日盘中拉升走高&#xff0c;到发稿&#xff0c;科源制药涨超16%&#xff0c;盘中一度冲击涨停&#xff1b;北陆药业涨超10%&#xff0c;精华制药、双成药业、海欣股份、奇特制药、龙津药业、永安药业等涨停&#xff0c;诚达药业、特一药业涨逾8%。 音讯面上&#xff0c;…

《实战AI模型》:GPT语义缓存为什么用GPTCache而不是Redis?

为什么不是Redis? 验证完可行性,便到了搭建系统的环节。这里我有一点必须要分享,在搭建 ChatGPT 缓存系统时,Redis 并不是我们的首选。 个人而言,我很喜欢用 Redis,它性能出色又十分灵活,适用于各种应用。但是 Redis 使用键值数据模型是无法查询近似键的。 如果用户提…

天!刚进公司的00后凭这套大屏模板直接涨薪5K,这是什么加薪利器

现在这世道&#xff0c;对普通人来说有一份谋生的工作真的都是奢求。前几天&#xff0c;坐在老李旁边&#xff0c;在公司待了10多年的老员工被叫到主管办公室说裁员的事情&#xff0c;他本来以为就是个普通的工作讨论&#xff0c;结果是通知他被裁员了&#xff0c;出来后整个人…

ESRVCC准备阶段优化提升方案

一、eSRVCC信令流程 UE发测量报告给eNb;基于测量报告&#xff0c;源eNb触发到GERAN的SRVCC切换流程&#xff1b;源eNb发送Handover Required 消息给源MME&#xff0c;消息中携带Target ID, generic Source to Target Transparent Container, SRVCC HO Indication等信息&#xf…

企业邮箱安全评估:选择最佳安全性的企业邮箱

企业在网络安全技术上投入了数十亿美元&#xff0c;但当涉及到邮箱安全时&#xff0c;风险甚至更高。随着网络钓鱼攻击、勒索软件和其他恶意威胁的兴起&#xff0c;确保邮箱免受入侵至关重要。 幸运的是&#xff0c;有许多安全解决方案和方法可供企业使用&#xff0c;包括: 反垃…

2023年国内最新的CRM系统排名

随着互联网技术的发展和竞争的激烈&#xff0c;越来越多的企业将目光放到CRM上&#xff0c;希望可以提高效率和收入。针对正在选型的企业&#xff0c;这里有一份国内crm系统排名【2023最新】&#xff0c;请注意查收。 1、Zoho CRM Zoho CRM是一款知名的在线CRM系统&#xff0…

uniapp开发小程序实现考勤打卡,附带源码

效果图&#xff1a; 考勤打卡三步走&#xff1a; 在地图上绘制打卡区域&#xff1a; uniapp开发小程序之在地图上进行绘制图形&#xff0c;并将经纬度转为固定格式的字符串_uniapp 绘制地图_阿晨12138的博客-CSDN博客 获取到用户定位&#xff0c;并跳转到当前用户定位&#xf…

【2023年11月第四版教材】《第2章-信息技术发展之存储和数据库(第二部分)》

第2章-信息技术发展之存储和数据库&#xff08;第二部分&#xff09; 3 存储和数据库3.1 存储系统架构3.2 存储技术3.3 数据库体系结构3.4 常用存储数据库类型优缺点 3 存储和数据库 3.1 存储系统架构 存储系统架构DASNASSAN安装难易度不一定简单困难数据传输协议SCSI/FC/ATA…

谷歌关闭跨域限制.(生成一个开发浏览器),Chrome关闭跨域

(一)、首先找到浏览器在电脑磁盘中的位置,并复制 (二)、复制一个浏览器的快捷方式到桌面(不影响正常浏览器) (三)、chrom鼠标右键属性&#xff0c;修改快捷方式的目标 &#xff08;四&#xff09;chrome.exe 后面添加 --disable-web-security --user-data-dir 复制的Chrome浏览…

视频监控汇聚EasyCVR平台WebRTC流地址无法播放的原因排查

开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多…

ZIG:理解未来编程语言的视角

文章目录 摘要&#xff1a;引言&#xff1a;性能简洁性和模块化避免常见错误和陷阱总结&#xff1a;参考资料&#x1f4d1;: 摘要&#xff1a; 本文介绍了新兴编程语言ZIG的目标和特点&#xff0c;包括高性能、简洁性和模块化&#xff0c;并分析了这些特点是如何通过语言设计来…

CC++内存管理与模版初阶

目录 四、C&C内存管理 (一)C/C内存分布 (二)C内存管理方式 1、new/delete操作内置类型 2、new和delete操作自定义类型 (三)operator new与operator delete函数 (四)new和delete的实现原理 1、内置类型 2、自定义类型 (五)定位new表达式(placement-new) (六)八股文 1、n…

Keburnetes pod概念 策略

Pod基础概念 Pod是kubernetes中最小的资源管理组件&#xff0c;Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。kubernetes中其他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的&#xff0c;例如&#xff0c;用于管理Pod运行的StatefulSet和D…

Flowable-结束事件-空结束事件

目录 定义图形标记XML内容 定义 空结束事件是最常见的一种结束事件&#xff0c;也是最简单的一种结束事件&#xff0c;只要把结束任务置于流程 或分支的最后节点&#xff0c;流程实例运行到该节点的时候&#xff0c;流程引擎就会结束该流程实例或分支。前面提 到&#xff0c;结…

Springboot中整合netty启动后,项目无法正常启动?

1.现象描述 netty等一般放在程序启动后再启动&#xff0c;多以下面方式启动&#xff1a; Component Order(value 2) public class NettyUdpServer implements ApplicationRunner {如果在 Order 后面还有其它模块被启动&#xff0c;那么其它模块就会被阻塞。 2.原因分析 主…

ArcGIS Pro实践技术应用——暨基础入门、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合、案例应用全流程科研能力提升

查看原文>>>ArcGIS Pro实践技术应用——暨基础入门、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合能力 本文将利用ArcGIS Pro 将您的 GIS 工作组织到工程中&#xff0c;您可以使用 ArcGIS Pro 映射 2D 和 3D 数据。借助 ArcGIS Pro&#xff…

装备制造业行业报告最新发布!

随着“十四五”战略规划的全力推动&#xff0c;物联网、5G、人工智能等新兴技术快速发展&#xff0c;制造装备智能化和自动化成为目前制造业发展的主要方向&#xff0c;重点推进高档数控机床与基础制造装备&#xff0c;自动化成套生产线&#xff0c;智能控制系统&#xff0c;精…