1.时间的判断,还有就是在php这边如何去拿前端html元素上面的值

input('$row.borrowtime');

      // 创建两个 DateTime 对象$row_expecttime = new \DateTime(input('$row.borrowtime'));$par_expecttime = new \DateTime( $params['expecttime']);
//        // 计算两个日期之间的差异
//        $diff = $par_expecttime->diff($row_expecttime);// 计算总的天数差异$totalDays = $par_expecttime->diff($row_expecttime);if ($totalDays->invert == 0){$this->error('续借时间不能小于原归还时间');}if ($totalDays->m >= 7){$this->error('借阅总时间最多不能超过7个月');}

2.批量存储数据的2中方法

2.1第一种数据量不大的话,就直接分别放到数组,然后一起sevaAll()一起存了算了

        $books_ids = explode(',', $params['books_id']);if(count($books_ids)>3){$this->error('一次最多不超过3本图书');}//        print_r($params);$result = false;Db::startTrans();try {//是否采用模型验证if ($this->modelValidate) {$name = str_replace("\\model\\", "\\validate\\", get_class($this->model));$validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate;$this->model->validateFailException()->validate($validate);}if(count($books_ids)>1){$seva_data = [];foreach ($books_ids as $key => $value) {$params['books_id'] = $value;$params['bookstatus']= Db::name('books')->where('id','=',$value)->value('status');
//                print_r($params);$seva_data[] = $params;}
//                print_r($seva_data);$result = $this->model->allowField(true)->saveAll($seva_data);if (!$result){throw new \Exception('图书'.$params['books_id'].'状态更新失败');}Db::commit();}else{$params['bookstatus']= Db::name('books')->where('id','=',$params['books_id'])->value('status');
//                print_r($params);$result = $this->model->allowField(true)->save($params);if (!$result){
//                    $res = Books::where('id','=',$params['books_id'])->where('status',1)->update(['status'=>2]);
//                    if (!$res){throw new \Exception('图书'.$params['books_id'].'状态更新失败');
//                    }}Db::commit();}} catch (ValidateException|PDOException|Exception $e) {Db::rollback();$this->error($e->getMessage());}if ($result === false) {$this->error(__('No rows were inserted'));}$this->success();

2.2如果数据量大的话,那么就选择用foreach循环一条一条的存,但是会有个问题就是model要放到循环里面去

        $books_ids = explode(',', $params['books_id']);if(count($books_ids)>3){$this->error('一次最多不超过3本图书');}$diff = strtotime($params['expecttime']) - strtotime($params['borrowtime']);if($diff > 180*24*3600){$this->error('借书时间不能超过180天');}else if($diff < 24*3600){$this->error('借书时间不能少于1天');}$result = false;Db::startTrans();try {//是否采用模型验证if ($this->modelValidate) {$name = str_replace("\\model\\", "\\validate\\", get_class($this->model));$validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate;$this->model->validateFailException()->validate($validate);}if(count($books_ids)>1){foreach ($books_ids as $key => $value) {$dt = $params;$dt['books_id'] = $value;$model = new \app\admin\model\read\Borrow;$result = $model->allowField(true)->save($dt);if ($result){$res = Books::where('id','=',$dt['books_id'])->where('status',1)->update(['status'=>2]);if (!$res){throw new \Exception('图书'.$dt['books_id'].'状态更新失败');}}}}else{$result = $this->model->allowField(true)->save($params);if ($result){$res = Books::where('id','=',$params['books_id'])->where('status',1)->update(['status'=>2]);if (!$res){throw new \Exception('图书'.$params['books_id'].'状态更新失败');}}}Db::commit();} catch (ValidateException|PDOException|Exception $e) {Db::rollback();$this->error($e->getMessage());}if ($result === false) {$this->error(__('No rows were inserted'));}$this->success();

3.数据库的关联查询

        $oldData = $this->model->with('books')->where('books_id' ,'in',$books_ids)->where('subscription.status','=','1')->select();//        $jsonData = json_encode($oldData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);  // 格式化 JSON 输出
//        print_r($jsonData);if ($oldData){$titles = array_map(function ($item){return $item['books']['name'];},$oldData);$this->error('已经在预约中不能重复预约:'.implode(",",$titles));}

4.用fastadmin自带的邮件系统发邮件

4.1进入到api里面可以自己,自定义一个api

4.2具体邮件类的封装是在下图的目录下,可以自己去找然后看里面的注释

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在MySQL中选择使用InnoDB还是MyISAM引擎?

在 MySQL 中选择 InnoDB 还是 MyISAM 存储引擎时&#xff0c;需根据应用场景的需求权衡功能、性能和数据完整性。以下是具体的选择指南&#xff1a; 1. 优先考虑事务和外键需求必须使用 InnoDB&#xff1a; 若应用需要 事务支持&#xff08;如金融转账、订单处理&#xff09;或…

邀请函 | 知从科技邀您共赴2025 RISC-V 中国峰会

第五届RISC-V中国峰会将于2025年7月16至19日在上海张江科学会堂隆重举办&#xff0c;本届峰会由上海开放处理器产业创新中心&#xff08;SOPIC&#xff09;主办&#xff0c;RISC-V国际开源实验室&#xff08;RIOS实验室&#xff09;和上海张江高科技园区开发股份有限公司联合主…

企业数字化转型规划和建设方案(管理架构、应用架构、技术架构)PPT

一、战略定位与核心目标以 “技术赋能业务&#xff0c;数据驱动创新” 为核心思路&#xff0c;构建 “三步走” 战略演进路径&#xff0c;实现 IT 从 “基础支撑” 到 “战略引擎” 的升级&#xff1a;IT1.0&#xff08;1-2 年&#xff09;&#xff1a;夯实基础能力定位 “稳健…

基于Uniapp+MySQL+PHP的景区多商户小程序源码系统 带完整的搭建指南

温馨提示&#xff1a;文末有资源获取方式该系统采用 PHP MySQL 的经典开发组合。PHP 作为一种广泛使用的开源脚本语言&#xff0c;具有简单易学、运行速度快、跨平台性强等优点&#xff0c;能够快速开发出功能强大的 Web 应用程序。MySQL 则是一款稳定可靠的关系型数据库管理系…

阿里云和腾讯云RocketMQ 发消息和消费消息客户端JAVA接口

一、RocketMQ 概述RocketMQ 是阿里巴巴开源的一款分布式消息中间件&#xff0c;后捐赠给 Apache 基金会成为顶级项目。它具有低延迟、高并发、高可用、高可靠等特点&#xff0c;广泛应用于订单交易、消息推送、流计算、日志收集等场景。核心特点分布式架构&#xff1a;支持集群…

Vue响应式原理六:Vue3响应式原理

1. 多个对象响应式当前存在的问题&#xff1a;当前实现仅针对某个固定对象&#xff08;obj&#xff09;进行依赖收集&#xff0c;实际开发中需要处理多个不同对象将对象响应式处理逻辑抽取为通用函数&#xff0c;支持任意对象代码如下&#xff1a; // 方案一&#xff1a;Obje…

【算法笔记 day three】滑动窗口(其他类型)

hello大家好&#xff01;这份笔记包含的题目类型主要包括求子数组已经一些比较‘小众’的题目。和之前一样&#xff0c;笔记中的代码和思路要么是我手搓要么是我借鉴一些大佬的想法转化成自己的话复现。所以方法不一定是最好的&#xff0c;但一定是经过我理解的产物&#xff0c…

docker-镜像管理指南

在本节中&#xff0c;我们将详细介绍 Docker 镜像的常用命令&#xff0c;帮助您更好地管理和操作镜像。以下是核心命令及其功能说明&#xff1a;1.使用"ls"查看镜像列表#查看现有的镜像列表[rootdocker01 ~]# docker images [rootdocker01 ~]# docker image ls#仅查看…

Mac 电脑无法读取硬盘的解决方案

引言近年来&#xff0c;选择使用 Mac 电脑的用户越来越多&#xff0c;尤其是在设计、开发、剪辑、文档处理等领域&#xff0c;macOS 凭借其优秀的系统生态与硬件体验吸引了大量拥趸。与此同时&#xff0c;对于摄影师、剪辑师、程序员、学生等用户来说&#xff0c;一块移动硬盘往…

25春期末考

web 疯狂星期四 先来看一下源码 分析代码的黑名单后得知 我们可以用的字符就只剩下 字母a-z(大小写均可) 数字2 空格 这里的限制太多了 这里比较常用的getallheaders被ban掉了 这里就是用session来做 session_start()开启session session_id()获取session 这里我们要构造一…

时间显示 蓝桥云课Java

目录 题目链接 题目 解题思路 代码 题目链接 竞赛中心 - 蓝桥云课 题目 解题思路 通过%天数,得到一天内的时间,然后/小时单位(换算成毫秒的)得到小时,然后总数减去该小时,得到分钟数,秒数同理 代码 import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不…

STM32F1控制步进电机

一、基础知识1. 步进电机控制方式脉冲方向控制&#xff08;最常见&#xff09;控制信号&#xff1a;DIR方向&#xff1a;高低电平决定正转或反转&#xff1b;STEP脉冲&#xff1a;每个脉冲电机前进一步&#xff08;可通过端口拉高拉低来模拟脉冲&#xff0c;或使用pwm来生成脉冲…

Docker 容器部署脚本

#!/bin/bash# # Author: ldj # Date: 2025-07-08 15:37:11 # Description: 首先删除旧的容器和镜像&#xff0c;然后登录到 Harbor 并拉取最新的镜像进行部署 # # 显示每条命令执行情况&#xff0c;便于调试 set -x harbor_addr$1 harbor_repo$2 project_name$3 version$4 po…

OpenCV 4.10.0 移植 - Android

前文: Ubuntu 编译 OpenCV SDK for Android Linux OpenCV 4.10.0 移植 概述 在移动应用开发领域&#xff0c;Android平台与OpenCV库的结合为开发者提供了强大的图像处理和计算机视觉能力。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件…

go go go 出发咯 - go web开发入门系列(二) Gin 框架实战指南

go go go 出发咯 - go web开发入门系列&#xff08;二&#xff09; Gin 框架实战指南 往期回顾 go go go 出发咯 - go web开发入门系列&#xff08;一&#xff09; helloworld 前言 前一节我们使用了go语言简单的通过net/http搭建了go web服务&#xff0c;但是仅使用 Go 的标…

编译OpenHarmony-4.0-Release RK3566 报错

编译OpenHarmony-4.0-Release RK3566 报错1. 报错问题2.问题解决3.解决方案4.​调试技巧​subsystem name config incorrect in ‘/home/openharmony/OpenHarmony/vendor/kaihong/khdvk_356b/bundle.json’, build file subsystem name is kaihong_products,configured subsy1.…

【PTA数据结构 | C语言版】线性表循环右移

本专栏持续输出数据结构题目集&#xff0c;欢迎订阅。 文章目录题目代码题目 给定顺序表 A(a1​,a2​,⋯,an​)&#xff0c;请设计一个时间和空间上尽可能高效的算法将该线性表循环右移指定的 m 位。例如&#xff0c;(1,2,5,7,3,4,6,8) 循环右移 3 位&#xff08;m3) 后的结果…

c++-内部类

概念如果一个类定义在另一个类的内部&#xff0c;这个内部类就叫做内部类。内部类是一个独立的类&#xff0c; 它不属于外部类。特性1.不能通过外部类的对象去访问内部类的成员。外部类对内部类没有任何优越的访问权限。 2.内部类就是外部类的友元类&#xff0c;参见友元类的定…

.golangci.yml文件配置

version: “2” run: timeout: 5m concurrency: 10 modules-download-mode: readonly linters: default: standard enable: - revive - cyclop settings: staticcheck: initialisms: [ “ACL”, “API”, “ASCII”, “CPU”, “CSS”, “DNS”, “EOF”, “GUID”, “HTML”, …

YOLO模型魔改指南:从原理到实战,替换Backbone、Neck和Head(战损版)

前言 Hello&#xff0c;大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者。本系列是作者参加DataWhale 2025年6月份Yolo原理组队学习的技术笔记文档&#xff0c;这里整理为博客&#xff0c;希望能帮助Yolo的开发者少走弯路&#xff01; &am…