關于數(shù)據(jù)庫查詢的chunk方法
function?DBChunk(){
????Db::table('book_list')->chunk(20,function?($results){
????????foreach?($results?as?$v){
????????????dump($v);//打印數(shù)組?輸出遍歷所處的一條記錄
????????}
????????echo?'-----------------------------------分頁----------------------';
????});
????//與上述方法相同。只不過回調函數(shù)不在方法內處理,將回調函數(shù)交給pageSplit方法
????Db::table('book_list')->chunk(20,'pageSplit');
}
function?pageSplit($result){
????return?false;
}老師,關于手冊這個看不明白
官方說明文檔:

文檔里不是寫方法的名字?我也是寫方法名啊,為什么這樣直接報錯。。。不是很懂這個例子的意思
我以為視頻會將chunk這個查詢,結果看了兩遍視頻發(fā)現(xiàn)沒講!
2018-03-07
<?php namespace?app\index\controller; use?think\Config; use?think\Db; class?Index { ????public?function?index() ????{ ????????$this->DBconnect();????????//1、連接數(shù)據(jù)庫 ????????$this->DBQuery();????????//2、使用查詢語句 ????????$this->DBChunk();????????//3、數(shù)據(jù)集分批處理 ????} ????function?DBconnect(){ ????????//1、連接數(shù)據(jù)庫 //????????$dbcon?=?Db::connect();//直接連接?參數(shù)在配置文件里配置?如果使用了自定義database配置,那么優(yōu)先使用自定義配置的文件,如果沒有,再使用默認的database配置 //????????$dbcon?=?Db::connect("mysql://root:@127.0.0.1:3306/itcast#utf8");//數(shù)據(jù)庫類型://用戶名:密碼@數(shù)據(jù)庫地址:數(shù)據(jù)庫端口/數(shù)據(jù)庫名#字符集 //????????$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?方法返回結果集,不存在返回空數(shù)組 ????????//查詢book_list中id=1的記錄中某個字段的值?(相當于某個表的單元格,非一行數(shù)據(jù)) ????????$value_query?=?Db::table('book_list')->where('id',1)->value('bname');//value方法不存在返回null,?取出ID為1的記錄,再查找字段?書名對應的值 ????????//column?返回數(shù)組?查詢某一個字段對應的所有記錄 ????????$column_query?=?Db::table('book_list')->where('id',2)->column('bname');//查詢ID為2的書名 //????????$column_query?=?Db::table('book_list')->column('bname');//查詢表中書名的一列的所有值,返回一個數(shù)組 ????????dump($find_query); ????????dump($selete_query); ????????dump($column_query); ????} ????function?DBChunk(){ ????????//3、數(shù)據(jù)集分批處理 ????????/**該方法一次獲取結果集的一小塊,然后填充每一小塊數(shù)據(jù)到要處理的閉包 ?????????*比如數(shù)據(jù)庫有一萬條記錄,每頁顯示100條 ?????????*則可以使用chunk分批處理,每次處理100條后分頁,再進行處理 ????????*/ ????????/** ?????????*?例:book_list?表中現(xiàn)在有5條數(shù)據(jù) ?????????*?我們分3頁 ?????????*?則每頁有2條數(shù)據(jù) ?????????*?所以?chunk(2,回調函數(shù)); ?????????*?在回調函數(shù)中,foreach進行遍歷處理 ?????????*/ ????????Db::table('book_list')->chunk(2,function?($results){ ????????????foreach?($results?as?$v){ ????????????????//傳入$results數(shù)組用來遍歷,foreach則根據(jù)$results的長度來判斷需要循環(huán)幾次,將每一次遍歷的成員再賦值給變量$v,以供后續(xù)進行使用 ????????????????//$v表示2條中的其中一條,此處$v是一條記錄,是數(shù)組變量 ????????????????dump($v);//打印數(shù)組?輸出遍歷所處的一條記錄 ????????????} ????????????echo?'-----------------------------------分頁----------------------'; ????????}); ????????//與上述方法相同。只不過回調函數(shù)不在方法內處理,將回調函數(shù)交給PageSplit方法 ????????Db::table('book_list')->chunk(2,'pageSplit'); ????} ????function?pageSplit($result){ ????????return?false; ????} }順便分享一下自己看了這一節(jié)視頻所做的筆記!