我是靠谱客的博主 高高彩虹,这篇文章主要介绍ThinkPHP官方最新版本发布-更新至ThinkPHP5.1.28,现在分享给大家,希望可以做个参考。

最受欢迎的php框架ThinkPHP在2018年10月29日迎来了最新一次的更新,以下就是ThinkPHP更新的主要内容。

该版本主要修正了上一个版本存在的一些问题,并改进了关联查询部分。支持上一个版本的无缝升级!

主要更新

聚合查询方法的字段支持DISTINCT

修正定义路由后url函数的端口支持

修正控制器中间件对swoole的支持

改进Log类save方法

改进验证类的闭包验证参数

多对多关联支持指定中间表数据的名称

关联聚合查询支持闭包方式指定聚合字段

改进Lang类get方法

多对多关联增加判断关联数据是否存在的方法

改进关联查询使用fetchsql的情况

改进修改器的是否已经执行判断

增加afterWith和beforeWith验证规则 用于比较日期字段

新版特性

控制器中间件改进

由于Swoole等模式下,类库常驻内存,控制器中间件第二次将不会执行,现在控制器中间件的执行过程不再纳入架构函数。

模型改进

改进了修改器是否执行的判断逻辑,如果没有定义修改器方法,允许对模型数据的多次赋值。这样,可以方便在模型事件中对数据进行修改。

聚合查询的字段支持使用DISTINCT,例如:

复制代码
1
User::count('DISTINCT id');
登录后复制

关联聚合查询使用闭包的时候支持指定聚合字段

复制代码
1
2
3
4
5
User::withCount(['book' => function($query){ // 统计今年出版的书的数量 并且使用books_num作为统计字段返回 $query->whereTime('publish_time', 'y'); return 'books_num'; })->select();
登录后复制

针对多对多关联,还可以支持下面的用法

复制代码
1
2
3
4
5
6
7
8
9
use thinkModel; class User extends Model{ public function roles() { // 使用pivotDataName方法指定中间表的数据对象名称 return $this->belongsToMany('role') ->pivotDataName('userRole'); } }
登录后复制
复制代码
1
2
3
4
$user = User::get(1); $role = Role::getByName('editor'); // 判断关联数据是否存在 如果存在则返回中间表对象 $pivot = $user->roles()->attached($role);
登录后复制

同时修正了当关联查询使用fetchSql方法导致的错误。

验证规则改进

验证规则如果使用了闭包,现在可以增加额外的参数,包括

复制代码
1
2
// 新增的参数包括title(规则标题)和validate(当前验证对象) function($value, $data, $title, $validate) {}
登录后复制

额外新增了beforeWith和afterWith两个验证规则,用于比较多个日期字段的数据。

复制代码
1
2
3
4
5
6
7
$validate = Validate::make([ 'start_time' => 'require|beforeWith:end_time', 'end_time' => 'require|afterWith:start_time' ]); if (!$validate->check($data)) { dump($validate->getError()); }
登录后复制

扩展更新

此次更新还包含了一些官方扩展的更新:

增加SeasLog日志扩展think-seaslog;

Swoole扩展更新至2.0.14版本;

单元测试扩展更新至2.0.5版本;

相关课程推荐:

最新ThinkPHP 5.1全球首发视频教程(60天成就PHP大牛线上培训班课)

独孤九贱(5)_ThinkPHP5视频教程

ThinkPHP基础实战视频教程

thinkphp3.2 基础视频教程

最后

以上就是高高彩虹最近收集整理的关于ThinkPHP官方最新版本发布-更新至ThinkPHP5.1.28的全部内容,更多相关ThinkPHP官方最新版本发布-更新至ThinkPHP5内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(152)

评论列表共有 0 条评论

立即
投稿
返回
顶部