最受歡迎的php框架ThinkPHP在2018年10月29日迎來(lái)了最新一次的更新肩榕,以下就是ThinkPHP更新的主要內(nèi)容。
該版本主要修正了上一個(gè)版本存在的一些問題虏束,并改進(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í)行的判斷邏輯间雀,如果沒有定義修改器方法,允許對(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版本署海;