第一章:数据库架构基础
本章我们首先从ThinkPHP5.0
的数据库访问层架构设计原理开始,然后熟悉下数据库的配置,并掌握如何进行基础的查询操作,并简单介绍了分布式、存储过程及事务,学习内容主要包括:
- 数据库架构设计
- 数据库配置
- 如何开始查询
- 使用参数绑定
- 查询返回值
- 动态连接数据库
- 分布式支持
- 存储过程调用
- 数据库事务
- 总结
第二章:数据创建和迁移
本章我们来了解下如何进行数据库的创建和迁移,并着重讲解了ThinkPHP5的数据库迁移扩展的使用,学习内容主要包括:
- 安装扩展
- 数据迁移
- 迁移方法
- 总结
第三章:查询构造器
本章主要来学习和使用查询构造器的用法,掌握查询构造器对于掌握数据库和模型的查询操作非常关键,学习内容主要包含:
- 创建查询类
- 数据库CURD操作
- 使用链式方法
- 查询语言
- 总结
第四章:高级查询技巧
数据库操作是一个入门易精通难的部分,本章我们来带你了解下数据访问层的一些高级查询技巧,熟练掌握的话会让你的查询如虎添翼,学习内容主要包括:
- 获取查询SQL
- 返回PDOStatement对象
- 使用SQL函数或运算
- 聚合查询
- 快捷查询
- 快捷更新
- 动态查询
- 时间查询
- 视图查询
- 子查询
- 数据分批处理
- 总结
第五章:模型和对象
从本章开始就要揭开模型的神秘面纱了,本章主要学习模型的定义和基础使用,以及和数据库操作的区别,学习内容主要包含:
- 模型和数据库区别
- 模型定义
- 模型调用
- 对象化操作
- 模型CURD操作
- 使用查询构造器
- 数据集
- 分页查询
- 添加业务逻辑
- 总结
第六章:模型数据处理
模型提供了比数据库类更为强大的数据处理功能,本章讲解了如何使用模型的各种数据自动处理机制来简化开发,包括模型数据的转换和输出,是模型的核心和必须掌握的部分,学习内容主要包含:
- 获取器和修改器
- 自动时间字段
- 数据类型转换
- 数据自动完成
- 数据转换和输出
- 模型事件
- 数据分批处理
- 总结
第七章:模型高级用法
本章带你了解下模型的一些高级技巧,这些技巧会让你在使用模型的过程中更加高效和简单,学习内容主要包含:
- 条件查询
- 查询范围
- 字段过滤
- 只读字段
- 软删除
- 自定义查询类
- 总结
第八章:模型关联
模型的关联操作是模型的最为强大,也是最为复杂的部分,通过模型关联操作把数据表的关联关系对象化,解决了大部分常用的关联场景,封装的关联操作比起常规的数据库联表操作更加智能和高效,并且直观,所以关联也可以说是模型的一个杀手锏,一旦使用了就会越来越喜欢,本章学习的内容包括:
- 定义关联
- 基础方法
- 关联查询
- 关联自定义查询
- 关联约束
- 关联预载入
- 关联统计
第九章:性能和安全
本章的内容主要讲解了如何给数据库的CURD查询添加回调事件,以及如何在最底层的SQL层面进行监听和做出性能分析及对查询性能做出优化建议,最后给出了一些安全方面的建议,学习内容主要从性能分析和优化,以及安全三个方面进行讲解:
- 性能分析
- 性能优化
- SQL优化
- 字段缓存
- 数据缓存
- 模型缓存
- 查询事件
常见问题
陆续整理数据库和模型相关的常见问题(保持更新~)
- 内置支持的数据库有哪些?
- Db类封装的方法看起来很简单,是如何实现调用的?
- Db类的内部是什么实现原理?
- 模型和Db类的区别主要是什么?
table
和name
方法的区别是什么?- 模型的
get
和all
方法可以支持条件查询么? - 模型的
get
和all
方法可以支持排序等链式操作么? - 闭包查询如何传入变量
- 在模型里面怎么限制查询字段
- 5.0还有数据表字段缓存么?
- 获取器和修改器方法名的规范是什么?
- 获取器是在什么时候触发?
- 修改器是在什么时候触发?
- 为什么定义的修改器会执行两次
- 如何使用视图模型?
- 设置主从分离后,如何切换到主库进行查询操作
- 如何查询一个字段值为NULL或者NOT NULL的数据?
- 如何直接使用字符串条件进行查询?
- 如何切换数据库连接
- 模型中如何使用事务
- Db类如何使用软删除功能
附录B:使用MongoDb
MongoDB
是由C++
语言编写的开源数据库系统,是一个基于分布式文件存储的非关系型数据库(NoSQL
),旨在为WEB应用提供可扩展的高性能数据存储解决方案。ThinkPHP
5.0
核心并不支持MongoDb
,但官方提供了mongo
驱动扩展,通过扩展可以很方便的和普通数据库一样使用MongoDb
,本篇我们就来给大家讲解下如何安装和使用MongoDb
,主要包含: - 安装环境及配置
- 使用查询构造器
- 关于主键
- 方法变化和差异
- 查询表达式
- 使用模型查询
- Mongo原生查询
- 总结
附录C:数据库配置清单
数据库配置参数清单
通用参数
参数 说明 默认值 type 数据库连接器名或数据库类型 mysql
hostname 数据库服务器地址 127.0.0.1
database 数据库名 空 username 数据库用户名 空 password 数据库密码 空 dns 数据库连接DNS 空 params 连接参数(数组) 空 charset 数据库编码 utf8
prefix 数据表前缀 空 debug 数据库调试模式 false deploy 服务器部署方式:0 单一服务器 1 分布式服务器 0 rw_separate 是否读写分离,主从式有效 false
master_num 读写分离后主服务器的数量 1 slave_no 指定从服务器的序号 空 fields_strict 是否严格检查字段是否存在 true
resultset_type 数据集类型 array
result_type 数据返回类型 数组 auto_timestamp 自动写入时间字段 false
datetime_format 时间字段输出格式 Y-m-d H:i:s
sql_explain 是否需要性能分析 false
query 指定查询器类 \think\db\Query
builder 指定生成器类名 空 break_reconnect 是否断线重连 false 一些注意事项:
type
参数核心内置的数据库驱动只需要填写数据库类型,如果是第三方扩展可能需要填写完整的连接器类名hostname
参数请避免使用localhost
,如果是分布式数据库用逗号分隔多个服务器地址break_reconnect
参数目前仅对Mysql
有效builder
参数一般不建议指定datetime_format
参数如果设置为false
表示时间字段为整型的时候不自动转换输出sql_explain
参数目前仅对mysql
有效-
MongoDb额外参数
MongoDb扩展额外增加了一些参数
参数 说明 默认值 pk 数据表主键名 _id
pk_convert_id 强制转换 _id
为id
false type_map 指定 typeMap
['root' => 'array', 'document' => 'array']