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版本;

本文参考地址:https://www.php.cn/toutiao-412424.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 主要更新 聚合查询方法的字段支持DISTINCT 修正定义路由后url函数的端口支持 修正控制器中间件对swool...
    未_来_可_期阅读 517评论 0 3
  • 原文:https://my.oschina.net/liuyuantao/blog/751438 查询集API 参...
    阳光小镇少爷阅读 3,847评论 0 8
  • 今天看到一位朋友写的mysql笔记总结,觉得写的很详细很用心,这里转载一下,供大家参考下,也希望大家能关注他原文地...
    信仰与初衷阅读 4,750评论 0 30
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,877评论 0 15
  • 更新框架修复 如果你使用composer安装,并且一直保持最新版本使用的话,使用下面的指令更新到最新版本即可 co...
    粪fa涂墙阅读 656评论 0 0