作者:农大军乐团_697 | 来源:互联网 | 2023-08-18 14:47
模型的主要功能包括数据处理和业务逻辑,而这些都离不开数据的CURD操作,因此我们首先来谈下数据的CURD操作,在掌握了数据库Db类的用法后,模型的CURD操作就会很容易理解,因为本质上模型的CURD操作最终调用的还是Db类的操作,区别在于使用了ActiveRecord模式和单独做了一层封装而已,我们来看下两种方式CURD操作用法的简单对比(其中模型会给出动态和静态两种实现方法,分别对应不同的场景)。
上面两种方式等效,当你的模型数据比较多不想一一赋值的时候,可以使用后者。也许你咋一看还觉得麻烦了,又是实例化又是赋值的,但好处多多,慢慢你就会体会到了,看起来是一个简单的赋值和保存操作其实内里大有乾坤,可以触发很多处理甚至事件。save方法的返回值不是自增主键的值(和Db的execute方法一样返回影响的记录数),要获取自增主键的值可以使用下面的方式:
和save方法不同,create方法的返回值是User模型的对象实例,而save方法调用的时候本身就在对象实例里面。很多开发者不习惯静态调用,这里必须说明的是模型类的静态CURD操作其实都是内部自动实例化而已,所以说白了提供的这些静态操作方法只是对动态CURD操作方法的静态封装罢了。至于静态方法的场景,主要是不想实例化或者不方便实例化的需求,而且支持变量的静态调用,例如:
$model = '\app\index\model\User';
$user = $model::create([
'name' => 'thinkphp',
'email' => 'thinkphp@qq.com',
]);
创建操作用法小结:
方法返回值save(动态)影响的记录数create(静态)模型对象实例