TP 模型代码速查导航

第一章:数据库架构基础

本章我们首先从ThinkPHP5.0的数据库访问层架构设计原理开始,然后熟悉下数据库的配置,并掌握如何进行基础的查询操作,并简单介绍了分布式、存储过程及事务,学习内容主要包括:

  • 数据库架构设计
  • 数据库配置
  • 如何开始查询
  • 使用参数绑定
  • 查询返回值
  • 动态连接数据库
  • 分布式支持
  • 存储过程调用
  • 数据库事务
  • 总结

    第二章:数据创建和迁移

    本章我们来了解下如何进行数据库的创建和迁移,并着重讲解了ThinkPHP5的数据库迁移扩展的使用,学习内容主要包括:

  • 安装扩展
  • 数据迁移
    • 创建迁移脚本
    • 运行迁移
    • 设置断点
    • 回滚迁移
  • 迁移方法
    • 创建数据表
    • 检查数据表或字段是否存在
    • 存储引擎
    • 设置主键
    • 重命名与删除数据表
    • 可用字段
    • 字段修饰
    • 特殊字段
    • 修改字段
    • 移除字段
    • 创建索引
    • 移除索引
    • 外键约束
  • 总结

    第三章:查询构造器

    本章主要来学习和使用查询构造器的用法,掌握查询构造器对于掌握数据库和模型的查询操作非常关键,学习内容主要包含:

  • 创建查询类
  • 数据库CURD操作
  • 使用链式方法
  • 查询语言
  • 总结

    第四章:高级查询技巧

    数据库操作是一个入门易精通难的部分,本章我们来带你了解下数据访问层的一些高级查询技巧,熟练掌握的话会让你的查询如虎添翼,学习内容主要包括:

  • 获取查询SQL
  • 返回PDOStatement对象
  • 使用SQL函数或运算
  • 聚合查询
  • 快捷查询
  • 快捷更新
  • 动态查询
  • 时间查询
  • 视图查询
  • 子查询
  • 数据分批处理
  • 总结

    第五章:模型和对象

    从本章开始就要揭开模型的神秘面纱了,本章主要学习模型的定义和基础使用,以及和数据库操作的区别,学习内容主要包含:

  • 模型和数据库区别
  • 模型定义
  • 模型调用
  • 对象化操作
  • 模型CURD操作
  • 使用查询构造器
  • 数据集
  • 分页查询
  • 添加业务逻辑
  • 总结

    第六章:模型数据处理

    模型提供了比数据库类更为强大的数据处理功能,本章讲解了如何使用模型的各种数据自动处理机制来简化开发,包括模型数据的转换和输出,是模型的核心和必须掌握的部分,学习内容主要包含:

  • 获取器和修改器
  • 自动时间字段
  • 数据类型转换
  • 数据自动完成
  • 数据转换和输出
  • 模型事件
  • 数据分批处理
  • 总结

    第七章:模型高级用法

    本章带你了解下模型的一些高级技巧,这些技巧会让你在使用模型的过程中更加高效和简单,学习内容主要包含:

  • 条件查询
  • 查询范围
  • 字段过滤
  • 只读字段
  • 软删除
  • 自定义查询类
  • 总结

    第八章:模型关联

    模型的关联操作是模型的最为强大,也是最为复杂的部分,通过模型关联操作把数据表的关联关系对象化,解决了大部分常用的关联场景,封装的关联操作比起常规的数据库联表操作更加智能和高效,并且直观,所以关联也可以说是模型的一个杀手锏,一旦使用了就会越来越喜欢,本章学习的内容包括:

  • 定义关联
  • 基础方法
  • 关联查询
  • 关联自定义查询
  • 关联约束
  • 关联预载入
  • 关联统计

    第九章:性能和安全

    本章的内容主要讲解了如何给数据库的CURD查询添加回调事件,以及如何在最底层的SQL层面进行监听和做出性能分析及对查询性能做出优化建议,最后给出了一些安全方面的建议,学习内容主要从性能分析和优化,以及安全三个方面进行讲解:

  • 性能分析
    • 数据库调试模式
    • 获取查询次数
    • 获取SQL
    • 开启性能分析
    • SQL监听
  • 性能优化
    • SQL优化
    • 字段缓存
    • 数据缓存
    • 模型缓存
    • 查询事件

      常见问题

      陆续整理数据库和模型相关的常见问题(保持更新~)

    • 内置支持的数据库有哪些?
    • Db类封装的方法看起来很简单,是如何实现调用的?
    • Db类的内部是什么实现原理?
    • 模型和Db类的区别主要是什么?
    • tablename方法的区别是什么?
    • 模型的getall方法可以支持条件查询么?
    • 模型的getall方法可以支持排序等链式操作么?
    • 闭包查询如何传入变量
    • 在模型里面怎么限制查询字段
    • 5.0还有数据表字段缓存么?
    • 获取器和修改器方法名的规范是什么?
    • 获取器是在什么时候触发?
    • 修改器是在什么时候触发?
    • 为什么定义的修改器会执行两次
    • 如何使用视图模型?
    • 设置主从分离后,如何切换到主库进行查询操作
    • 如何查询一个字段值为NULL或者NOT NULL的数据?
    • 如何直接使用字符串条件进行查询?
    • 如何切换数据库连接
    • 模型中如何使用事务
    • Db类如何使用软删除功能

      附录B:使用MongoDb

      MongoDB 是由C++语言编写的开源数据库系统,是一个基于分布式文件存储的非关系型数据库(NoSQL),旨在为WEB应用提供可扩展的高性能数据存储解决方案。

      ThinkPHP5.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 强制转换_idid false
      type_map 指定typeMap ['root' => 'array', 'document' => 'array']
    •  
    •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

你可能感兴趣的:(TP 模型代码速查导航)