laravel里使用chunk的一个坑
时间:2022-07-26
本文章向大家介绍laravel里使用chunk的一个坑,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在使用一个命令行脚本给某个表加个辅助字段,使用laravel的模型里的chunk,结果代码里有部分数据没有处理被跳过去了。
public function handle()
{
$start_time = microtime(true);
TestModel::select(['id','created_time'])
->whereNull('create_date') //关键条件
->chunk(200,function ($notes){
collect($notes)->each(function($item){
if(empty($item['create_date']))
{
TestModel::where('id',$item['id'])->update(['create_date'=>date('Y-m-d',$item['created_time'])]); //问题所在
}
});
});
$end_time = microtime(true);
echo "Run over!take time (s):".($end_time - $start_time);
exit;
}
典型的思维陷阱,因为create_date
的数据在变,使用chunk
方法在处理第二页时实际处理的是第三页的数据(因为create_date在第一页时数据已经处理完成了,而再进行select * from test limit 100,200),因此在数据处理完成后已经实际的数据在已经位移到第limit 200, 200
)从而跳过去了。
解决方式的话,1是直接用个while死循环查询,当没有数据事再break掉;2是不把whereNull('create_date')
这个条件加进去。
- R语言中的非线性分类
- 用SPSS做数据分析?先弄懂SPSS的基础知识吧
- 学习笔记CB001:NLTK库、语料库、词概率、双连词、词典
- 时序列数据库武斗大会之 OpenTSDB 篇
- 应当使用 SQLite 的五个原因
- Apache Spark作为编译器:深入介绍新的Tungsten执行引擎
- DC/OS 的安装与部署
- Go语言实践:从新手入门到上线真实的小型服务所遇到的那些坑
- 4个简单的数据管理技巧
- MongoDB的设计模式策略
- 如何用容器实现生产级Redis sharding集群一键交付
- Hadoop旧mapreduce的map任务切分原理
- 解读Neo4j全新的Python驱动程序
- MySQL 5.7 X Plugin:流水线技术vs.并行查询技术
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- Octave 笔记
- VSCode如何设置Vue前端的debug调试
- Istio安全-授权(实操三)
- SpringBoot入门建站全系列(三十六)AspectJ做AOP日志管理
- 图像处理笔记(1)----OpenCV 图像BGR转RGB
- Intellij IDEA常用操作整理手册
- IDEA类和方法注释模板设置(非常详细)
- 《JavaScript 模式》读书笔记(7)— 设计模式2
- 《JavaScript 模式》读书笔记(7)— 设计模式3
- 弄它!!!Ospf--动态路由--链路状态路由协议!全面解析OSPF协议!
- 弄它!!!理论加实验,小小ISIS分分钟拿下!!
- 「Mysql索引原理(二)」Mysql高性能索引实践,索引概念、BTree索引、B+Tree索引
- 「Mysql索引原理(一)」1.存储引擎简介
- 弄它!!!小小BGP!理论加实验分分钟拿下!带你体验大网的世界!
- 搞它!!!Linux常用命令合集