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

laravel框架中批量更新数据

在php框架中 tp中就有批量更新封装好的 SaveAll

在laravel中有批量插入没有批量更新操作;因此我们可以自己去封装一个 然后批量进行更新操作

封装参考代码:

/*** 批量更新** @param $tableName 表名称* @param string $pk 更新的字段* @param array $multipleData 要更新的数据* @return bool|int*/
public function updateBatch($tableName, string $pk = 'id', array $multipleData = []): bool|int
{try {if (empty($multipleData)) {Log::info("批量更新数据为空");return false;}$firstRow = current($multipleData);$updateColumn = array_keys($firstRow);// 默认以id为条件更新,如果没有ID则以第一个字段为条件$referenceColumn = !isset($firstRow[$pk]) ? 'id' : current($updateColumn);unset($updateColumn[0]);// 拼接sql语句$updateSql = "UPDATE " . $tableName . " SET ";$sets = [];$bindings = [];foreach ($updateColumn as $uColumn) {$setSql = "`" . $uColumn . "` = CASE ";foreach ($multipleData as $data) {$setSql .= "WHEN `" . $referenceColumn . "` = ? THEN ? ";$bindings[] = $data[$referenceColumn];$bindings[] = $data[$uColumn];}$setSql .= "ELSE `" . $uColumn . "` END ";$sets[] = $setSql;}$updateSql .= implode(', ', $sets);$whereIn = collect($multipleData)->pluck($referenceColumn)->values()->all();$bindings = array_merge($bindings, $whereIn);$whereIn = rtrim(str_repeat('?,', count($whereIn)), ',');$updateSql = rtrim($updateSql, ", ") . " WHERE `" . $referenceColumn . "` IN (" . $whereIn . ")";Log::info($updateSql);// 传入预处理sql语句和对应绑定数据return DB::update($updateSql, $bindings);} catch (\Exception $e) {Log::info("批量更新数据失败:" . $e->getMessage());return false;}
}

 运行前可以先 打印查看数据是否正确 这个封装可以有效防止sql注入问题

一般用于脚本批量更新

下标是表名称 --我是多表更新 

 单表这种格式就行

 

 

相关文章:

laravel框架中批量更新数据

在php框架中 tp中就有批量更新封装好的 SaveAll 在laravel中有批量插入没有批量更新操作;因此我们可以自己去封装一个 然后批量进行更新操作 封装参考代码: /*** 批量更新** param $tableName 表名称* param string $pk 更新的字段* param array $multipleData 要更新的数据*…...

【Linux】POSIX信号量和基于环形队列的生产消费者模型

目录 写在前面的话 什么是POSIX信号量 POSIX信号量的使用 基于环形队列的生产消费者模型 写在前面的话 本文章主要先介绍POSIX信号量,以及一些接口的使用,然后再编码设计一个基于环形队列的生产消费者模型来使用这些接口。 讲解POSIX信号量时&#x…...

Rust之编写自动化测试

1、测试函数的构成: 在最简单的情形下,Rust中的测试就是一个标注有test属性的函数。属性 (attribute)是一种用于修饰Rust代码的元数据。只需要将#[test]添加到关键字fn的上一行便可以将函数转变为测试函数。当测试编写完成后,我们可以使用cargo test命令来运行测试…...

【网络】网络层——IP协议

🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言:你只管努力,剩下的交给时间! 网络层中,IP协议首部和有效载荷组成的完整数据称为数据报。 IP协议 🍉TCP和IP的…...

动力电池系统介绍(十三)——高压互锁(HVIL)

动力电池系统介绍(十三) 一、高压互锁梗概1.1 高压互锁原理1.1 高压互锁内部结构1.2 高压互锁分类1.3 高压互锁原则 二、高压互锁常见故障2.1 高压互锁开关失效2.2 端子退针导致开路2.3 互锁端子对地短路2.4 动力电池内部故障 三、高压互锁故障排查 一、…...

C# 一种求平方根的方法 立方根也可以 极大 极小都可以

不知道研究这些干啥&#xff0c;纯纯的浪费时间。。。 public static double TQSquare(double number){Random random1 new Random(DateTime.Now.Millisecond);double x1 0, resultX1 0, diff 9999999999, diffTemporary 0;for (int i 0; i < 654321; i){if (random1…...

爬虫逆向实战(十二)--某交易所登录

一、数据接口分析 主页地址&#xff1a;某交易所 1、抓包 通过抓包可以发现登录是通过表单提交的 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块&#xff0c;可以发现有两个加密参数password和execution 请求头是否加密&#xff1f; 无响应是…...

【C++入门到精通】C++入门 —— list (STL)

阅读导航 前言一、list简介1.概念2.特点 二、list的使用1.list的构造2.常见的操作⭕std::list类型的增、删、查、改 三、list与vector的对比温馨提示 前言 文章绑定了VS平台下std::list的源码&#xff0c;大家可以下载了解一下&#x1f60d; 前面我们讲了C语言的基础知识&…...

SOLIDWORKS有限元分析

SOLIDWORKS是一款广泛使用的三维计算机辅助设计软件&#xff0c;同时它还具有强大的有限元分析功能。有限元分析是一种工程分析方法&#xff0c;它将复杂的实体分解成许多小的有限元素&#xff0c;以便对其进行数学建模和分析。SOLIDWORKS的有限元分析功能可以帮助工程师预测和…...

Kotlin Flow 冷流

协程&#xff1a;Flow 1、Flow是什么&#xff1f; 处理异步事件流可取消&#xff1a;通过取消协程取消Flow组合操作符&#xff1a;复杂逻辑处理缓冲和背压&#xff1a;发送和接收时用不同速度处理&#xff0c;实现流量控制、避免数据丢失 2、传统事件处理方案&#xff1a;同…...

Android Socket使用TCP协议实现手机投屏

本节主要通过实战来了解Socket在TCP/IP协议中充当的是一个什么角色&#xff0c;有什么作用。通过Socket使用TCP协议实现局域网内手机A充当服务端&#xff0c;手机B充当客户端&#xff0c;手机B连接手机A&#xff0c;手机A获取屏幕数据转化为Bitmap&#xff0c;通过Socket传递个…...

【云原生,k8s】Helm应用包管理器介绍

目录 一、为什么需要Helm&#xff1f; &#xff08;一&#xff09;Helm介绍 &#xff08;二&#xff09;Helm有3个重要概念&#xff1a; &#xff08;三&#xff09;Helm特点 二、Helm V3变化 &#xff08;一&#xff09;架构变化 &#xff08;二&#xff09;自动创建名…...

两个内网之间的linux服务器如何互相登录?快解析内网穿透

如果两个内网之间的linux服务器需要互相登录&#xff0c;或需要互相访问内网某个端口&#xff0c;担忧没有公网IP&#xff0c;可以使用的方法有 ngrok, 但并不方便&#xff0c;我们只需两条 SSH 命令即可。 SSH 内网端口转发实战SSH 内网端口转发实战 先给出本文主角&…...

sql server 存储过程 set ansi_nulls set quoted_identifier,out 、output

SQL-92 标准要求在对空值(NULL) 进行等于 () 或不等于 (<>) 比较时取值为 FALSE。 当 SET ANSI_NULLS 为 ON 时&#xff0c;即使 column_name 中包含空值&#xff0c;使用 WHERE column_name NULL 的 SELECT 语句仍返回零行。即使 column_name 中包含非空值&#xff0c…...

1046:判断一个数能否同时被3和5整除

【题目描述】 判断一个数n 能否同时被3和5整除&#xff0c;如果能同时被3和5整除输出YES&#xff0c;否则输出NO。 【输入】 输入一行&#xff0c;包含一个整数n。&#xff08; -1,000,000 < n < 1,000,000&#xff09; 【输出】 输出一行&#xff0c;如果能同时被3…...

优漫动游零基础如何学习好UI设计

智能时代的来临&#xff0c;很多企业都越来越注重用户体验这一块&#xff0c;想要有一个吸引用户的好页面&#xff0c;UI设计师岗位不可或缺&#xff0c;如今越来越多的人想要学习UI设计技术&#xff0c;那么对于零基础小白如何学习好UI设计呢? 零基础小白如何学习好UI设计…...

Android岗位技能实训室建设方案

一 、系统概述 Android岗位技能作为新一代信息技术的重点和促进信息消费的核心产业&#xff0c;已成为我国转变信息服务业的发展新热点&#xff1a;成为信息通信领域发展最快、市场潜力最大的业务领域。互联网尤其是移动互联网&#xff0c;以其巨大的信息交换能力和快速渗透能力…...

Mysql系列:Mysql5.7编译安装--系统环境:Centos7 / CentOS9 Stream

Mysql系列&#xff1a;Mysql5.7编译安装 系统环境&#xff1a;Centos7 / CentOS9 Stream 1&#xff1a;下载mysql源码包 https://dev.mysql.com/downloads/mysql/5.7.htmldownloads 选择MySQL Community Server>source_code>Generic Linux (Architecture Independent)…...

Docker容器与虚拟化技术:Dockerfile部署LNMP

目录 一、理论 1.LNMP架构 2.背景 3.Dockerfile部署LNMP 3.构建Nginx镜像 4.构建MySQL容器 5.构建PHP镜像 6.启动 wordpress 服务 二、实验 1.环境准备 2.构建Nginx镜像 3.构建MySQL容器 4.构建PHP镜像 5.启动 wordpress 服务 三、问题 1.构建nginx镜像报错 …...

elementUI date-picker 日期格式转为 2023/08/08格式

<el-form-item label"基线日期:" prop"baselineDate"><el-date-pickertype"date"v-model"form.baselineDate"placeholder"选择日期"format"yyyy/MM/dd"change"(date, type) > changeTime(date, …...

完全指南:Linux系统下Realtek RTL8821CE无线网卡驱动深度解析与实战配置

完全指南&#xff1a;Linux系统下Realtek RTL8821CE无线网卡驱动深度解析与实战配置 【免费下载链接】rtl8821ce 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8821ce 在Linux系统中&#xff0c;Realtek RTL8821CE无线网卡驱动的正确配置对于802.11ac标准的Wi-Fi蓝…...

告别报错!手把手教你用Python的cinrad库解析气象雷达基数据(附常见环境问题解决)

从零到精通&#xff1a;Python气象雷达数据处理实战指南 气象雷达数据是天气监测和预报的重要信息来源&#xff0c;而Python作为科学计算的主流语言&#xff0c;为雷达数据处理提供了强大支持。本文将带你深入掌握cinrad库的使用技巧&#xff0c;避开常见陷阱&#xff0c;高效处…...

MikroTikPatch多架构支持:x86、ARM、MIPS平台完全攻略

MikroTikPatch多架构支持&#xff1a;x86、ARM、MIPS平台完全攻略 【免费下载链接】MikroTikPatch MikroTik RouterOS Patch Public Key and Generate License 项目地址: https://gitcode.com/gh_mirrors/mikr/MikroTikPatch MikroTikPatch是一款针对MikroTik RouterOS的…...

智能体开发实战:从LLM工具调用到自主决策系统的架构指南

1. 项目概述与核心价值最近在开源社区里&#xff0c;一个名为DaMaxime/openclaw-agents-docs的项目引起了我的注意。乍一看&#xff0c;这像是一个围绕“OpenClaw Agents”的文档仓库&#xff0c;但当你深入进去&#xff0c;会发现它远不止是简单的API手册或使用说明。这个项目…...

别再只用默认配置了!手把手教你用nohup后台启动Minio并自定义账号密码(附日志查看技巧)

从零到生产级部署&#xff1a;Minio自定义配置与后台服务管理实战指南 在Linux服务器上部署对象存储服务时&#xff0c;Minio因其轻量、兼容S3协议的特性成为众多开发者的首选。但大多数教程止步于基础安装&#xff0c;忽略了生产环境所需的配置细节——这正是本文要填补的关键…...

避坑!Altium Designer 21.6 这几个Preference设置千万别乱动(附最佳实践)

Altium Designer 21.6 关键Preference设置避坑指南与高效配置策略 在电子设计自动化&#xff08;EDA&#xff09;领域&#xff0c;Altium Designer作为行业标杆工具&#xff0c;其强大的功能背后隐藏着诸多可能影响工作效率的"设置陷阱"。本文将从实际工程经验出发&…...

为LLM构建安全代码执行环境:e2b代码解释器实战指南

1. 项目概述&#xff1a;当LLM拥有一个真正的代码执行环境最近在折腾AI应用开发&#xff0c;特别是想让大语言模型&#xff08;LLM&#xff09;不只是“纸上谈兵”&#xff0c;而是能真正动手执行代码、处理数据、生成图表。这让我找到了一个非常有意思的项目&#xff1a;e2b-d…...

如何用DownKyi实现B站视频自由:5个实用场景与解决方案

如何用DownKyi实现B站视频自由&#xff1a;5个实用场景与解决方案 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#…...

【Pixel专属Gemini Edge推理引擎】:本地运行LLM不联网、零延迟、功耗降低47%——实测数据首次公开

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Gemini Edge推理引擎的Pixel专属定位与技术边界 Gemini Edge 是 Google 为 Pixel 系列设备深度定制的端侧推理引擎&#xff0c;其核心设计目标并非通用模型部署&#xff0c;而是围绕 Pixel 的硬件协同栈…...

基于大语言模型的AI狼人杀游戏:双层角色扮演与模型竞技场设计

1. 项目概述&#xff1a;当狼人杀遇上AI&#xff0c;一场全新的推理盛宴毕业之后&#xff0c;想凑齐8到12个人&#xff0c;在周末的晚上围坐一圈&#xff0c;点上外卖&#xff0c;来一场酣畅淋漓的狼人杀&#xff0c;几乎成了一种奢望。这个游戏的精髓在于社交&#xff0c;但剥…...