thinkphp5 10分钟快速理解数据库类和模型

1、理解thinkphp5的数据库模型是熟练使用thinkphp5的最重要的部分。毕竟数据是产品的核心。
2、thinkphp5封装的数据访问抽象层(DAL)是数据库操作的基础。DAL是局域PDO接口的。所有先了解PDO是掌握thinkphp5数据库操作的关键。
3、了解过PDO之后,再来看一下thinkphp5的数据库操作封装结构示意图就会非常明了。
4、根据文件目录查看示意图:

文件目录
示意图

query类(查询类)和builder类(生成类)其实可以看做一个整体,称之为查询构造器。因为整体来看builder只是为query服务的。作为整体来看,就是查询构造器提供函数,让代码组装查询方法,然后查询构造器再根据代码中的参数组装成原生SQL传递给connection类(连接器类),连接器类再调用PDO进行查询并将查询的数据返回给查询构造器

示意图:(右边少画了一个箭头,见谅)

示意图2
5、Query类的所有查询基本上都是使用了PDO的预处理和参数绑定控制。(这个不明白就应该去了解一下PDO)
6、根据上图可以看出来,代码中,使用Db创建对象时,其实是调用了db/connector/下指定的连接类,然后该连接类根据基类connection(连接器类)去解析参数,然后调用PDO进行数据库连接。
7、默认thinkphp的数据库连接都是惰性的,也就是说,使用Db实例化的对象只是为连接数据库解析完参数,为连接数据库做好了准备,实际还没有连接数据库。只有查询执行的时候才会连接数据库,其中缘由去看PDO的实现原理就知道了。
8、配置文件可以给PDO设置长连接,具体参考手册。
9、Db类调用connection.php的原生SQL语句就是PDO的query和execute,这是静态调用。这两个函数参考PDO手册
10、Db类作为工厂类,可以直接调用PDO类的方法和查询构造器中提供的所有方法
11、去手册看一下查询构造器提供了什么方法,特别是链式方法,在模型中会用得到。


1、模型的作用主要是模型混合和模型关联。
2、伪模型:模型中封装的方法直接使用Db的静态调用,该方式不可取
3、模型的要素:继承/think/model、可对应多个数据表、与数据表名可以不一致、使用空模型也不用Db、不建议用数据库前缀。
4、模型功能:数据处理逻辑、业务逻辑
5、模型可以单独设置数据库的连接,可以将不同数据库中的数据表在一个模型中统一管理
6、可以在controller中使用模型对象注入的方式使用模型
7、模型也可以静态调用查询构造器中的所有方法
8、查询应该使用的是静态调用(不明白什么是静态调用可以去百度,就是 模型::方法),更新删除才应该用动态调用(模型对象->方法)
9、模型内部应该避免内部查询自己的数据(查询范围除外),更不建议使用table。但是模型内部可以静态查询其他模型的。


补充:

多看流年的文档,免费的框架,花几十块钱买文档也是值得的。程序员不支持程序员,谁还支持程序员呢?

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

InterestingFigure

迈克 Let's Go

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值