本文由thinkphp框架教學專欄為大家介紹分析ThinkORM新增加的虛擬模型功能,希望對需要的朋友有幫助!
最新版本的ThinkORM增加了一個虛擬模型功能,這個功能早在ThinkPHP3.2版本中出現過,但新版的虛擬模型功能更為強大。
在之前,如果需要進行虛擬模型操作的話,模型類別就不能繼承Model類,然後封裝自己的業務邏輯,雖然也能滿足部分需求,但無法實現獲取器、修改器以及模型關聯的功能,例如:
<?php namespace app\model; class User { public function getInfo() { // 业务逻辑代码 } }
新版著重強化了虛擬模型,數據只能保存在記憶體中,而且只能透過實例化的方式來創建數據,虛擬模型可以保留模型的大部分功能,包括獲取器、模型事件,甚至是關聯操作,另一方面也更方便單元測試。
要使用虛擬模型,只需要在模型定義的時候引入Virtual trait,例如:
<?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'); } }
你不需要在資料庫中存在有對應的user表,但仍然可以進行相關數據操作,以下是一些簡單例子。
// 创建数据 $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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

Dreamweaver CS6
視覺化網頁開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具