首頁 >頭條 >ThinkPHP官方最新版本發佈-更新至ThinkPHP5.1.28

ThinkPHP官方最新版本發佈-更新至ThinkPHP5.1.28

不言
不言轉載
2018-10-29 10:46:037102瀏覽

最受歡迎的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 基礎影片教學######
陳述:
本文轉載於:ThinkPHP微信公众号。如有侵權,請聯絡admin@php.cn刪除