最も人気のある PHP フレームワークである ThinkPHP は、2018 年 10 月 29 日に最新のアップデートを受け取りました。ThinkPHP アップデートの主な内容は次のとおりです。
このバージョンでは、主に以前のバージョンに存在していたいくつかの問題が修正され、関連するクエリ部分が改善されています。前バージョンからのシームレスなアップグレードをサポート!
主な更新
集計クエリ メソッドのフィールドが DISTINCT をサポート
URL 関数のポート サポートを修正ルートの定義
コントローラ ミドルウェアの swoole サポートを修正
#Log クラスの保存メソッドを改善#検証クラスのクロージャ検証パラメータを改善
##Many -to-many アソシエーションサポート仕様 中間テーブルデータの名前連想集計クエリは集計フィールドを指定するクロージャーメソッドをサポートLang クラスの get メソッドを改善多対多の関連付けにより、関連付けられたデータが存在するかどうかを判断するメソッドが追加されました 関連クエリでの fetchsql の使用を改善#修飾子が実行されたかどうかの判断を改善
日付フィールドを比較するための afterWith および beforeWith 検証ルールを追加
新バージョンの機能
コントローラー ミドルウェアの改善
Swooleなどのモードではクラスライブラリがメモリ上に常駐するため、コントローラミドルウェアの制御は2回目以降は実行されなくなり、コントローラミドルウェアの実行処理がアーキテクチャ機能に含まれなくなりました。
モデルの改善モディファイアメソッドが定義されていない場合、モデルデータへの複数の代入が許可されるように、モディファイアが実行されるかどうかの判定ロジックが改善されました。このようにして、モデル イベントでデータを簡単に変更できます。 集計クエリのフィールドは、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) {}
$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 ワールドプレミア ビデオ チュートリアル (PHP エキスパートになるまでの 60 日のオンライン トレーニング クラス)