本文内容主要介绍下ThinkPHP目前版本的数据库和模型操作相对于版本的一些变化区别。
总体来说,在数据库和模型层面,的改动并不大,只是因为强类型变量的约束会导致一些用法的差异,以及一些统一和废弃的方法会导致查询代码的调整。
版本目前尚未正式发布,在正式发布之前可能仍然会存在变化。
新特性
在最新版本的基础上,改进和新增了一些功能特性。
强类型严格模式
新版核心全面启用了严格模式,避免因为方法参数类型模糊而导致的规范不一或者潜在问题。
使用门面对象
新版的类不再是静态类,需要使用门面进行静态代理。
重构的方法
查询类的方法返回了一个新的类,获取查询SQL的操作和查询操作完全隔离。另外一个副作用是可以使得查询方法的返回值更加规范。类目前已经支持动态查询方法。
增加乐观锁功能
和软删除一样,增加了一个Trait用于方便引入扩展模型的乐观锁功能。
增加方法
模型的查询可以通过显式调用方法使得查询结果返回数组而不是模型对象和数据集,适用于一些图表控件的数据输出。
模型增加定义
模型类增加属性,用于完整定义模型对应数据表的字段信息,可以避免查询的时候获取数据表字段信息而无需生成缓存。并且该属性中定义字段类型支持使用类型定义。需要注意和/属性的区别,field属性仅用于定义当前模型允许写入的字段,而属性则仅用于定义数据字段的类型强制转换。
模型延迟保存机制
模型增加延迟保存方法,调用该方法后不会马上保存数据,仅仅是保存在内存中,当前模型对象销毁的时候或者下次显式调用方法的时候都会自动保存到数据库。
系列方法增加参数绑定支持
方法(包括//方法)支持手动参数绑定。
增加方法
增加方法使用表达式方法定义当前查询的数据表。
查询缓存支持闭包情况
改进查询缓存方法支持使用闭包查询的情况。
增加方法
由于参数强制类型的关系,方法不支持传入数组,必须使用方法传入数组批量设置字段获取器。
废弃功能和方法
废弃了一些目前已经很少用到或者不建议使用的功能,以及对容易混淆的一个功能多个用法进行了统一。
数据分表功能
取消了数据库分表功能,建议直接使用数据库的分区功能替代,更灵活和性能更好,同时取消了类的和方法。
取消了/方法
无论使用类还是模型类查询,全部统一使用/方法,取消了之前模型类额外提供的/方法。
取消方法
取消了Query类的方法,当模型使用方法查询的时候,数据不存在自动返回一个空模型对象,无需再使用方法了。
取消方法
取消了Query类的方法,模型的关联获取直接使用关联属性方式惰性获取。
取消了方法
取消了Query类和模型类的方法,由于该方法使用了静态属性容易导致Swoole等常驻内存的环境下读取错乱。需要的时候可以用方法手动切换主库读取。
取消方法
取消了Query类的方法,需要的时候直接使用方法替代。
取消查询方法传入对象
取消Query类的CURD查询方法传入当前对象,如果需要请使用闭包替代。
取消全局查询范围方法
取消模型类的全局查询范围方法,改由使用属性定义(数组)需要全局查询的查询范围方法。或者在方法中传入全局查询范围。如果是静态查询,可以使用。
取消和助手函数
这两个助手函数版本已经不再建议使用了,新版直接废弃掉这两个助手函数,请指教使用类和实际的模型类调用。
取消/方法
取消Query类的/方法,统一使用/方法替代,同时改进了/方法支持延时更新。
取消方法
取消Query类的方法,请直接使用方法或者方法。
取消支持
方法取消支持,必须明确调用完整表名或者使用方法。
取消等方法传入对象
除了方法本身可以传入对象外,其它的所有查询方法(例如/等)都不再支持传入对象。
取消配置参数
数据集查询结果不再受配置参数影响,默认情况下,Db查询统一返回数组,模型查询统一返回模型对象和模型数据集对象。如果Db查询的时候也需要返回数据集的话,可以显式调用方法。
方法和独立
无需在模型关联方法中定义是否使用JOIN查询,只有在明确调用的时候才会使用JOIN查询。
领取专属 10元无门槛券
私享最新 技术干货