手册地址:https://www.kancloud.cn/manual/thinkphp5/135176
数据集分批处理
如果你需要处理成千上百条数据库记录,可以考虑使用chunk方法,该方法一次获取结果集
的一小块,然后填充每一小块数据到要处理的闭包,该方法在编写处理大量数据库记录的时
候非常有用。
比如,我们可以全部用户表数据进行分批处理,每次处理 100 个用户记录:
Db::table('think_user')->chunk(100, function($users) {
foreach ($users as $user) {
//
}
});
// 或者交给回调方法myUserIterator处理
Db::table('think_user')->chunk(100, 'myUserIterator');
有点不理解这句Db::table('think_user')->chunk(100, 'myUserIterator');
比如我这样写:
Db::table('book_list')->chunk(2,function ($results){
foreach ($results as $v){
//传入$results数组用来遍历,foreach则根据$results的长度来判断需要循环几次,将每一次遍历的成员再赋值给变量$v,以供后续进行使用
//$v表示2条中的其中一条,此处$v是一条记录,是数组变量
dump($v);//打印数组 输出遍历所处的一条记录
}
echo '-----------------------------------分页----------------------';
});
没错,可以正常查询但是我这样写:
Db::table('book_list')->chunk(2,'PageSplit');
function PageSplit(){
echo 'ssssssssss';
return false;
}
直接报错,没有错误说明,就说是页面错误
开发模式已经打开
是不是我用法不对
刚刚开始用TP不久
网上也没有chunk的用法例子
百度了很多,也加了一些群,问了也没人回复,很心寒,希望各位会的大佬告诉我一下用法
小弟不胜感激!!!!!!!!



实在是搞不懂!
最佳答案
