您的位置:首页 > 编程语言 > PHP开发

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

2017-03-03 17:51 190 查看
1、理解thinkphp5的数据库模型是熟练使用thinkphp5的最重要的部分。毕竟数据是产品的核心。

2、thinkphp5封装的数据访问抽象层(DAL)是数据库操作的基础。DAL是局域PDO接口的。所有先了解PDO是掌握thinkphp5数据库操作的关键。

3、了解过PDO之后,再来看一下thinkphp5的数据库操作封装结构示意图就会非常明了。

4、根据文件目录查看示意图:





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

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



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。但是模型内部可以静态查询其他模型的。

补充:

多看流年的文档,免费的框架,花几十块钱买文档也是值得的。程序员不支持程序员,谁还支持程序员呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: