风.fox
thinkphp5.x之Collection(集合)解析 php集合
http://blog.csdn.net/fenglailea/article/details/52723586
thinkphp5 数据库 链接
http://blog.csdn.net/fenglailea/article/details/52728899

db函数

本函数没什么好说,直接PASS

/*** 实例化数据库类* @param string        $name 操作的数据表名称(不含前缀)* @param array|string  $config 数据库配置参数* @param bool          $force 是否强制重新连接* @return \think\db\Query*/function db($name = '', $config = [], $force = true){return Db::connect($config, $force)->name($name);}

Db类

// 命名空间
namespace think;
// 框架入口
use think\App;
// 数据集
use think\Collection;
// 数据库操作动作类
use think\db\Query;
// 分页数据集 处理类
use think\paginator\Collection as PaginatorCollection;/*** 这里就看出你的开发工具是否强大了。其他地方调用该类,都会有类的方法提示* Class Db* @package think* @method Query table(string $table) static 指定数据表(含前缀)* @method Query name(string $name) static 指定数据表(不含前缀)* @method Query where(mixed $field, string $op = null, mixed $condition = null) static 查询条件* @method Query join(mixed $join, mixed $condition = null, string $type = 'INNER') static JOIN查询* @method Query union(mixed $union, boolean $all = false) static UNION查询* @method Query limit(mixed $offset, integer $length = null) static 查询LIMIT* @method Query order(mixed $field, string $order = null) static 查询ORDER* @method Query cache(mixed $key = true , integer $expire = null) static 设置查询缓存* @method mixed value(string $field) static 获取某个字段的值* @method array column(string $field, string $key = '') static 获取某个列的值* @method Query view(mixed $join, mixed $field = null, mixed $on = null, string $type = 'INNER') static 视图查询* @method mixed find(mixed $data = []) static 查询单个记录* @method mixed select(mixed $data = []) static 查询多个记录* @method integer insert(array $data, boolean $replace = false, boolean $getLastInsID = false, string $sequence = null) static 插入一条记录* @method integer insertGetId(array $data, boolean $replace = false, string $sequence = null) static 插入一条记录并返回自增ID* @method integer insertAll(array $dataSet) static 插入多条记录* @method integer update(array $data) static 更新记录* @method integer delete(mixed $data = []) static 删除记录* @method boolean chunk(integer $count, callable $callback, string $column = null) static 分块获取数据* @method mixed query(string $sql, array $bind = [], boolean $fetch = false, boolean $master = false, mixed $class = false) static SQL查询* @method integer execute(string $sql, array $bind = [], boolean $fetch = false, boolean $getLastInsID = false, string $sequence = null) static SQL执行* @method PaginatorCollection paginate(integer $listRows = 15, mixed $simple = false, array $config = []) static 分页查询* @method mixed transaction(callable $callback) static 执行数据库事务* @method boolean batchQuery(array $sqlArray) static 批处理执行SQL语句*/
class Db
{//  数据库连接实例private static $instance = [];// 查询次数public static $queryTimes = 0;// 执行次数public static $executeTimes = 0;/*** 数据库初始化 并取得数据库类实例* @static* @access public* @param mixed         $config 连接配置* @param bool|string   $name 连接标识 true 强制重新连接* @return \think\db\Connection* @throws Exception*/public static function connect($config = [], $name = false){// 变量$name值为布尔类型中的假值时,才会执行if (false === $name) {// 根据配置信息,序列化后,使用MD5 生成一个唯一标识$name = md5(serialize($config));}// 变量$name值为布尔类型中的真值时,且// 数组 $instance中 $name 的值 不存在时 才会执行if (true === $name || !isset(self::$instance[$name])) {// 解析连接参数 支持数组和字符串$options = self::parseConfig($config);// 数据驱动类型不存在,则报错if (empty($options['type'])) {throw new \InvalidArgumentException('Underfined db type');}// 获得 数据库驱动命名空间的地址$class = false !== strpos($options['type'], '\\') ? $options['type'] : '\\think\\db\\connector\\' . ucwords($options['type']);// 记录初始化信息if (App::$debug) {Log::record('[ DB ] INIT ' . $options['type'], 'info');}// $name 连接标识 为 true 强制重新连接if (true === $name) {// 重新实例化 数据库驱动,直接返回该对象return new $class($options);} else {// 重新实例化 数据库驱动,并保存到静态变量$instance[$name]中// 我不会告诉你这个是 设计模式中的 单例模式的self::$instance[$name] = new $class($options);}}return self::$instance[$name];}/*** 数据库连接参数解析* @static* @access private* @param mixed $config* @return array*/private static function parseConfig($config){// 数据库参数不存在时if (empty($config)) {// 读取 默认数据库信息$config = Config::get('database');}// 数据库参数$config 是字符串时,且 变量中不含有 / 时 ,执行elseif (is_string($config) && false === strpos($config, '/')) {// 支持读取配置参数$config = Config::get($config);}// 如果是字符串if (is_string($config)) {// 字符串 解析return self::parseDsn($config);} else {return $config;}}/*** DSN解析* 格式: mysql://username:passwd@localhost:3306/DbName?param1=val1&param2=val2#utf8* @static* @access private* @param string $dsnStr* @return array*/private static function parseDsn($dsnStr){// 解析 ,不知道的同学,请自觉查文档$info = parse_url($dsnStr);if (!$info) {return [];}// 变量初始化$dsn = ['type'     => $info['scheme'],'username' => isset($info['user']) ? $info['user'] : '','password' => isset($info['pass']) ? $info['pass'] : '','hostname' => isset($info['host']) ? $info['host'] : '','hostport' => isset($info['port']) ? $info['port'] : '','database' => !empty($info['path']) ? ltrim($info['path'], '/') : '','charset'  => isset($info['fragment']) ? $info['fragment'] : 'utf8',];if (isset($info['query'])) {//解析 ,不知道的同学,请自觉查文档parse_str($info['query'], $dsn['params']);} else {$dsn['params'] = [];}return $dsn;}// 调用驱动类的方法// __callStatic() 这个方法用来监视一个对象中的静态方法。如果你试着调用一个对象中不存在的静态方法,它将会被自动调用。// 不知道的同学,请自觉查文档public static function __callStatic($method, $params){// 自动初始化数据库// call_user_func_array 调用回调函数,并把一个数组参数作为回调函数的参数// 不知道的同学,请自觉查文档return call_user_func_array([self::connect(), $method], $params);}
}

thinkphp5.x之数据库操作相关解析 Db类相关推荐

  1. 3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的区别,sql文件导入

     1相关术语 语句 含义 操作 DML语句 (Data Manipulation Language) 数据库操作语言 insert update delete select DDL语言 (Date ...

  2. 数据库学习day_01:SQL的发展和数据库操作相关sql语句

    1.数据库 学习数据库主要学习的就是如何对数据进行增删改查操作. 增加(插入数据) 删除数据 修改数据 查询数据 为什么使用数据库软件? 之前在webserver时通过IO技术已经操作过数据,其实这部 ...

  3. prooerties mysql_mysql数据库操作相关知识--读书笔记分享

    =================== 数据库软件: 数据库: 保存特定类型数据的容器 表: 特定类型数据的结构化清单 模式: 关于数据库和表的布局及特性的信息 列: 表中的一个字段, 行: 表中的一 ...

  4. android中的数据库操作(SQLite)

    android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库   an ...

  5. mysql 数据库操作类_【数据库操作类】10个php操作数据库类下载

    数据库(Database)操作是在开发过程中重要的组成部分,熟练掌握数据库的操作是开发人员必备的武器.PHP中文网为大家提供了各种封装好的php数据库操作类库,供大家下载和学习. 相关mysql视频教 ...

  6. android中的数据库操作

    android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库 andr ...

  7. golang:闲谈数据库操作

    今天简单看了下database/sql包,稍微总结下关于golang的数据库操作的一些东西,如有错误的地方,欢迎指出. import ( "database/sql" _ &quo ...

  8. C#ADO.NET数据库操作

    C#ADO.NET数据库操作 数据库连接 功能描述 Connection类 属性方法 实现流程 代码演示 数据库操作 类介绍 Command类 功能描述 构造方法 属性方法 实现流程 DataRead ...

  9. 微信公众平台开发 mysql_微信公众平台开发数据库操作

    一.简介 前面讲解的功能开发都是简单的调用API 完成的,没有对数据库进行操作.在接下来的高级功能开发中,需要使用到数据库,所以在这一篇中,将对MySQL 数据库的操作做一下简单的介绍,以供读者参考. ...

  10. php db类 应用实例,PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例

    本文实例讲述了PHP封装类似thinkphp连贯操作数据库Db类与简单应用.分享给大家供大家参考,具体如下: header("Content-Type:text/html;charset=u ...

最新文章

  1. Fundebug录屏插件更新至0.4.0,修复BUG,优化性能
  2. .Net开发中的多线程编程总结
  3. 启动Kafka失败Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 107
  4. bp配置 sap_SAP转储订单之 STO without delivery
  5. layer.open 强化1
  6. mac 配置环境变量,讲的太仔细了,非常棒
  7. LeetCode113. 路径总和||
  8. 正交矩阵和Gram-Schmidt正交化
  9. Go语言:交换两个整型变量的值
  10. 数据结构课程设计-商品货架管理(C语言)
  11. PyTorch中文教程 | (4) 迁移学习教程
  12. rollup 开发vue组件库及umd SDK 问题总结
  13. UOJ132 【NOI2015】小园丁与老司机
  14. Nuvoton M0518 之 看门狗的使用Demo
  15. vue-router仿天猫底部导航栏
  16. 谷歌浏览器(chrome)允许跨域设置的方法
  17. 【AI语音】九联UNT402A_通刷_纯净精简_免费线刷固件包
  18. Rayleigh瑞利多径信道matlab模拟和仿真
  19. 制药业中的自然语言处理(NLP)
  20. pytest接口自动化测试框架 | 汇总

热门文章

  1. 开发一个简单实用的android紧急求助软件
  2. Ubuntu Linux 8.04 Vsftp 虚构用户设置
  3. 华为u8825d解锁工具_黔隆科技刷机教程VIVOY55L.PD1613忘记密码刷机解锁降级救砖解屏幕锁账户锁教程...
  4. 机器人编程java面试题,7届国赛java试题 4: 机器人塔
  5. 数学与计算机科学奖王小云,2019 数学与计算机科学奖 获奖人 —— 王小云 - 未来科学大奖...
  6. python 如何判断字典存在key
  7. Caffe编译 Mnist训练测试---基本参数学习
  8. 关于FCN代码实现(实践篇)
  9. SQLServer数据库写操作报错String or binary data would be truncated问题解决
  10. 20170910算法工程师在线笔试之求第n个丑数