function DBChunk(){ Db::table('book_list')->chunk(20,function ($results){ foreach ($results as $v){ dump($v);//打印数组 输出遍历所处的一条记录 } echo '-----------------------------------分页----------------------'; }); //与上述方法相同。只不过回调函数不在方法内处理,将回调函数交给pageSplit方法 Db::table('book_list')->chunk(20,'pageSplit'); } function pageSplit($result){ return false; }
老师,关于手册这个看不明白
官方说明文档:
文档里不是写方法的名字?我也是写方法名啊,为什么这样直接报错。。。不是很懂这个例子的意思
我以为视频会将chunk这个查询,结果看了两遍视频发现没讲!
<?php namespace app\index\controller; use think\Config; use think\Db; class Index { public function index() { $this->DBconnect(); //1、连接数据库 $this->DBQuery(); //2、使用查询语句 $this->DBChunk(); //3、数据集分批处理 } function DBconnect(){ //1、连接数据库 // $dbcon = Db::connect();//直接连接 参数在配置文件里配置 如果使用了自定义database配置,那么优先使用自定义配置的文件,如果没有,再使用默认的database配置 // $dbcon = Db::connect("mysql://root:@127.0.0.1:3306/itcast#utf8");//数据库类型://用户名:密码@数据库地址:数据库端口/数据库名#字符集 // $dbcon = Db::connect( // [ // 'type' => 'mysql', // 'hostname' => '127.0.0.1', // 'database' => 'itcast', // 'username' => 'root', // 'password' => '', // 'hostport' => '', // 'debug' => true // ] // );//直接写入配置 $dbcon = Db::connect(Config::get('db_config1'));//使用了自定义配置中的自定义db_config1 dump($dbcon); } function DBQuery(){ //2、使用查询语句 //查询book_list中id=1的记录 // $find_query=Db::name('list')->where('id',1)->find(); //配置了表前缀 则使用name(未配置表前缀使用table方法),省略了book_ //查询book_list中id=1的记录 $find_query=Db::table('book_list')->where('id',1)->find(); //find 方法返回结果,不存在返回null //查询book_list中id=1的记录 $selete_query=Db::table('book_list')->where('id',1)->select(); //selete 方法返回结果集,不存在返回空数组 //查询book_list中id=1的记录中某个字段的值 (相当于某个表的单元格,非一行数据) $value_query = Db::table('book_list')->where('id',1)->value('bname');//value方法不存在返回null, 取出ID为1的记录,再查找字段 书名对应的值 //column 返回数组 查询某一个字段对应的所有记录 $column_query = Db::table('book_list')->where('id',2)->column('bname');//查询ID为2的书名 // $column_query = Db::table('book_list')->column('bname');//查询表中书名的一列的所有值,返回一个数组 dump($find_query); dump($selete_query); dump($column_query); } function DBChunk(){ //3、数据集分批处理 /**该方法一次获取结果集的一小块,然后填充每一小块数据到要处理的闭包 *比如数据库有一万条记录,每页显示100条 *则可以使用chunk分批处理,每次处理100条后分页,再进行处理 */ /** * 例:book_list 表中现在有5条数据 * 我们分3页 * 则每页有2条数据 * 所以 chunk(2,回调函数); * 在回调函数中,foreach进行遍历处理 */ Db::table('book_list')->chunk(2,function ($results){ foreach ($results as $v){ //传入$results数组用来遍历,foreach则根据$results的长度来判断需要循环几次,将每一次遍历的成员再赋值给变量$v,以供后续进行使用 //$v表示2条中的其中一条,此处$v是一条记录,是数组变量 dump($v);//打印数组 输出遍历所处的一条记录 } echo '-----------------------------------分页----------------------'; }); //与上述方法相同。只不过回调函数不在方法内处理,将回调函数交给PageSplit方法 Db::table('book_list')->chunk(2,'pageSplit'); } function pageSplit($result){ return false; } }
顺便分享一下自己看了这一节视频所做的笔记!