您好,欢迎访问一九零五行业门户网

ThinkPHP官方最新版本发布-更新至ThinkPHP5.1.28

最受欢迎的php框架thinkphp在2018年10月29日迎来了最新一次的更新,以下就是thinkphp更新的主要内容。
该版本主要修正了上一个版本存在的一些问题,并改进了关联查询部分。支持上一个版本的无缝升级!
主要更新
聚合查询方法的字段支持distinct
修正定义路由后url函数的端口支持
修正控制器中间件对swoole的支持
改进log类save方法
改进验证类的闭包验证参数
多对多关联支持指定中间表数据的名称
关联聚合查询支持闭包方式指定聚合字段
改进lang类get方法
多对多关联增加判断关联数据是否存在的方法
改进关联查询使用fetchsql的情况
改进修改器的是否已经执行判断
增加afterwith和beforewith验证规则 用于比较日期字段
新版特性
控制器中间件改进
由于swoole等模式下,类库常驻内存,控制器中间件第二次将不会执行,现在控制器中间件的执行过程不再纳入架构函数。
模型改进
改进了修改器是否执行的判断逻辑,如果没有定义修改器方法,允许对模型数据的多次赋值。这样,可以方便在模型事件中对数据进行修改。
聚合查询的字段支持使用distinct,例如:
user::count('distinct id');
关联聚合查询使用闭包的时候支持指定聚合字段
user::withcount(['book' => function($query){ // 统计今年出版的书的数量 并且使用books_num作为统计字段返回 $query->wheretime('publish_time', 'y'); return 'books_num';})->select();
针对多对多关联,还可以支持下面的用法
use think\model;class user extends model{ public function roles() { // 使用pivotdataname方法指定中间表的数据对象名称 return $this->belongstomany('role') ->pivotdataname('userrole'); }}
$user = user::get(1);$role = role::getbyname('editor');// 判断关联数据是否存在 如果存在则返回中间表对象$pivot = $user->roles()->attached($role);
同时修正了当关联查询使用fetchsql方法导致的错误。
验证规则改进
验证规则如果使用了闭包,现在可以增加额外的参数,包括
// 新增的参数包括title(规则标题)和validate(当前验证对象)function($value, $data, $title, $validate) {}
额外新增了beforewith和afterwith两个验证规则,用于比较多个日期字段的数据。
$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 基础视频教程
其它类似信息

推荐信息