本人喜欢使用模型操作数据库,很多工具比如修改器、获取器、模型事件等很方便。同时发现使用静态方法,尽量不要使用助手函数,下列方法都可以使用修改器、获取器、模型事件等。官方给的各种新增、修改数据的方法太多了,那么接下来就总结一下以后自己用thinkphp 5.1
数据库操作的基本硬性要求:
首先:use
模型类。
use app\common\model\User;
插入数据:使用模型的静态方法插入数据:
// 单条数据
User::create(['username' => 'lilei', 'password' => '123456']); //返回模型的对象实例
// 多条数据:
// saveAll() 不是静态方法,只能通过实例化模型或者助手函数插入了。
// 比insertAll插入数据速度快。
// 助手函数
model('user')->saveAll($data);
// 实例化模型
$user = new User();
$user->saveAll($data); // 返回模型的对象实例
// 上述两种方法都比较不舒服,使用频率或者数据量不大的话当然使用静态方法也可以的
// 静态 insertAll() 方法。
User::insertAll($data); // 推荐 返回插入条数
上述插入分析见:https://www.jianshu.com/p/4662d54630ab
修改数据:使用模型的静态方法
// 方法1:使用模型类的静态方法update ---- ///// 无法使用模型事件 ///////
User::update(['user_id' => 1, 'username' => 'lilei', 'password' => '123456']); //返回模型的对象实例
// 方法2:先查询后更新 官方的最佳使用方式
$user = User::get(1);
$user->password = '321654';
$user->save(); // 返回bool
总结:
1、模型的作用主要是模型混合和模型关联。
2、伪模型:模型中封装的方法直接使用Db的静态调用,该方式不可取
3、模型的要素:继承/think/model
、可对应多个数据表、与数据表名可以不一致、使用空模型也不用Db、不建议用数据库前缀。
4、模型功能:数据处理逻辑、业务逻辑
5、模型可以单独设置数据库的连接,可以将不同数据库中的数据表在一个模型中统一管理
6、可以在controller中使用模型对象注入的方式使用模型
7、模型也可以静态调用查询构造器中的所有方法
8、查询、新增应该使用的是静态调用,更新删除才应该用动态调用(模型对象->方法)
9、模型内部应该避免内部查询自己的数据(查询范围除外),更不建议使用table。但是模型内部可以静态查询其他模型的。
网友评论