この記事は、thinkphp フレームワーク ThinkORM に新たに追加された仮想モデル機能の紹介と分析を目的としたチュートリアル コラムとして提供されており、困っている友人の役に立てば幸いです。
ThinkORM の最新バージョンでは、仮想モデル機能が追加されました この機能は ThinkPHP3.2 バージョンから登場しましたが、新バージョンの仮想モデル機能はさらに強力になっています。
以前は、仮想モデルの操作が必要な場合、モデル クラスは Model クラスを継承して独自のビジネス ロジックをカプセル化することができず、一部のニーズを満たすことはできましたが、ゲッター、モディファイア、およびモデルの関連付けを実装できませんでした。
<?php namespace app\model; class User { public function getInfo() { // 业务逻辑代码 } }
新バージョンは、仮想モデルの強化に重点を置いています。データはメモリにのみ保存でき、データはインスタンス化によってのみ作成できます。仮想モデルは、仮想モデルの機能のほとんどを保持できます。ゲッターを含むモデル、モデル イベント、さらには関連する操作も単体テストに便利です。
仮想モデルを使用するには、モデルを定義するときに Virtual 特性を導入するだけです。例:
<?php namespace app\model; use think\Model; use think\model\concern\Virtual; class User extends Model { use Virtual; public function getInfo() { // 业务逻辑代码 } public function getStatusAttr($value) { $status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核']; return $status[$value]; } public function setNameAttr($value) { return strtolower($value); } public function blog() { return $this->hasMany('Blog'); } }
データベース内に対応するユーザー テーブルを持つ必要はありませんが、関連するデータ操作は引き続き実行できます。簡単な例をいくつか示します。
// 创建数据 $data = [ 'id' => 8, 'name' => 'Think', 'status' => 1, ]; $user = User::create($data); // 获取数据 (支持获取器) echo $user->name; // 输出 think // 修改数据 (支持修改器) $user->name = 'ThinkPHP'; // 实际数据变成 thinkphp // 保存数据到内存 并且调用模型事件 $user->save(); // 获取关联博客数据 $blog = $user->blog()->limit(3)->select(); // 删除数据(同时删除关联博客数据) $user->together(['blog'])->delete();
仮想モデルには実際のデータ テーブルがないため、クエリ操作を実行できません。次のコードは例外をスローします:
User::find(1); // 会抛出下面的异常 // virtual model not support db query
仮想モデルは自動をサポートしていないことに注意してください。タイムスタンプ関数 (ただし、時間フィールドの書式設定は引き続きサポートされます)、時間フィールドが必要な場合は、インスタンス化中にそれを渡す必要があります。
ゲッター、モディファイア、モデル イベントを定義した場合でも、それらは引き続き有効なので、時間があるときにテストできます。
関連する推奨事項: 最新の 10 件の thinkphp ビデオ チュートリアル
以上がThinkORMの新たに追加された仮想モデル機能を解析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。