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;
}
}
顺便分享一下自己看了这一节视频所做的笔记!