ThinkPHP5.0的模型CURD读取Read操作

模型的主要功能包括数据处理和业务逻辑,而这些都离不开数据的CURD操作,因此我们首先来谈下数据的CURD操作,在掌握了数据库Db类的用法后,模型的CURD操作就会很容易理解,因为本质上模型的CURD操作最终调用的还是Db类的操作,区别在于使用了ActiveRecord模式和单独做了一层封装而已,我们来看下两种方式CURD操作用法的简单对比(其中模型会给出动态和静态两种实现方法,分别对应不同的场景)。

ThinkPHP5.0的模型CURD读取Read操作

V5.0.8版本之前模型的get方法如果没有传值或者传入空值,会查询第一个符合条件的数据,这个问题在V5.0.8版本已经修正,get方法必须传入非空的值,否则直接返回Null。

Db类的find方法返回的是一个数组,模型类的get方法返回的是一个User模型对象实例。模型的读取操作一般使用静态方法读取即可,返回模型对象实例。很多用户往往会写出下面的代码,理论上来说当然也没有错,其实是大可不必的。

$user = new User;

$user->find(1);

除非你已经在User模型的对象实例内部去调用find方法读取数据,但这种方式不符合模型对象的设计原则,一个模型对象实例应该唯一对应数据表的一条记录

ThinkPHP5.0的模型CURD读取Read操作

模型的查询操作比起Db查询有一个显著的特征就是不需要每次调用table或者name方法,因为每个模型在创建的时候已经自动对应了数据表。在读取多个记录的方式上,两种方式的区别并不大,只是默认返回数据集类型的区别,Db方式返回的数据集是一个包含每个用户数组的二维数组,而模型方式返回的数据集包含每个User模型对象实例的数组。

事实上,这个差异在实际进行数据集处理的时候根本感觉不到,也就是说后者仍然可以使用前者的方式统一操作。对于多个主键的数据读取,模型还封装了一个all方法,用法如下:

ThinkPHP5.0的模型CURD读取Read操作

关于模型的get和all方法的更多用法,而且也完全可以替代数据库提供的find和select方法,我们会在模型高级用法一章中给你继续深入。读取操作用法小结:

方法作用返回值
get查询单个记录模型对象实例
find查询单个记录模型对象实例
all根据主键查询多个记录包含模型对象实例的数组或者数据集
select
根据条件查询多个记录包含模型对象实例的数组或者数据集


分享到:


相關文章: