亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于數據庫查詢的chunk方法

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;
}

老師,關于手冊這個看不明白

官方說明文檔:

http://img1.sycdn.imooc.com//5a9ff19c0001447f06650293.jpg

文檔里不是寫方法的名字?我也是寫方法名啊,為什么這樣直接報錯。。。不是很懂這個例子的意思


我以為視頻會將chunk這個查詢,結果看了兩遍視頻發現沒講!


正在回答

1 回答

<?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;
????}
}

順便分享一下自己看了這一節視頻所做的筆記!

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

關于數據庫查詢的chunk方法

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號