ThinkPHP官方最新版本發(fā)布-更新至ThinkPHP5.1.28

最受歡迎的php框架ThinkPHP在2018年10月29日迎來(lái)了最新一次的更新,以下就是ThinkPHP更新的主要內(nèi)容。
該版本主要修正了上一個(gè)版本存在的一些問(wèn)題,并改進(jìn)了關(guān)聯(lián)查詢部分。支持上一個(gè)版本的無(wú)縫升級(jí)!

主要更新

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

修正定義路由后url函數(shù)的端口支持

修正控制器中間件對(duì)swoole的支持

改進(jìn)Log類save方法

改進(jìn)驗(yàn)證類的閉包驗(yàn)證參數(shù)

多對(duì)多關(guān)聯(lián)支持指定中間表數(shù)據(jù)的名稱

關(guān)聯(lián)聚合查詢支持閉包方式指定聚合字段

改進(jìn)Lang類get方法

多對(duì)多關(guān)聯(lián)增加判斷關(guān)聯(lián)數(shù)據(jù)是否存在的方法

改進(jìn)關(guān)聯(lián)查詢使用fetchsql的情況

改進(jìn)修改器的是否已經(jīng)執(zhí)行判斷

增加afterWith和beforeWith驗(yàn)證規(guī)則 用于比較日期字段

新版特性

控制器中間件改進(jìn)

由于Swoole等模式下,類庫(kù)常駐內(nèi)存,控制器中間件第二次將不會(huì)執(zhí)行,現(xiàn)在控制器中間件的執(zhí)行過(guò)程不再納入架構(gòu)函數(shù)。

模型改進(jìn)

改進(jìn)了修改器是否執(zhí)行的判斷邏輯,如果沒(méi)有定義修改器方法,允許對(duì)模型數(shù)據(jù)的多次賦值。這樣,可以方便在模型事件中對(duì)數(shù)據(jù)進(jìn)行修改。

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

User::count('DISTINCT id');

關(guān)聯(lián)聚合查詢使用閉包的時(shí)候支持指定聚合字段

User::withCount(['book' => function($query){

    // 統(tǒng)計(jì)今年出版的書的數(shù)量 并且使用books_num作為統(tǒng)計(jì)字段返回

    $query->whereTime('publish_time', 'y');

    return 'books_num';

})->select();

針對(duì)多對(duì)多關(guān)聯(lián),還可以支持下面的用法

use think\Model;

class User extends Model{

    public function roles()

    {

        // 使用pivotDataName方法指定中間表的數(shù)據(jù)對(duì)象名稱

        return $this->belongsToMany('role')

            ->pivotDataName('userRole');

    }

}

$user =  User::get(1);

$role =  Role::getByName('editor');

// 判斷關(guān)聯(lián)數(shù)據(jù)是否存在 如果存在則返回中間表對(duì)象

$pivot = $user->roles()->attached($role);

同時(shí)修正了當(dāng)關(guān)聯(lián)查詢使用fetchSql方法導(dǎo)致的錯(cuò)誤。

驗(yàn)證規(guī)則改進(jìn)

驗(yàn)證規(guī)則如果使用了閉包,現(xiàn)在可以增加額外的參數(shù),包括

// 新增的參數(shù)包括title(規(guī)則標(biāo)題)和validate(當(dāng)前驗(yàn)證對(duì)象)

function($value, $data, $title, $validate) {}

額外新增了beforeWith和afterWith兩個(gè)驗(yàn)證規(guī)則,用于比較多個(gè)日期字段的數(shù)據(jù)。

$validate = Validate::make([

    'start_time'   => 'require|beforeWith:end_time',

    'end_time'     => 'require|afterWith:start_time'

]);

if (!$validate->check($data)) {

    dump($validate->getError());

}

擴(kuò)展更新

此次更新還包含了一些官方擴(kuò)展的更新:

增加SeasLog日志擴(kuò)展think-seaslog;

Swoole擴(kuò)展更新至2.0.14版本;

單元測(cè)試擴(kuò)展更新至2.0.5版本;

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容