首頁 php框架 ThinkPHP 分析ThinkORM新增加的虛擬模型功能

分析ThinkORM新增加的虛擬模型功能

Aug 06, 2021 am 09:27 AM

本文由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=>&#39;删除&#39;,0=>&#39;禁用&#39;,1=>&#39;正常&#39;,2=>&#39;待审核&#39;];
        return $status[$value];
    }
    public function setNameAttr($value)
    {
        return strtolower($value);
    }
    public function blog()
    {
        return $this->hasMany(&#39;Blog&#39;);
    }
}
登入後複製

你不需要在資料庫中存在有對應的user表,但仍然可以進行相關數據操作,以下是一些簡單例子。

// 创建数据
$data = [
    &#39;id&#39;      =>    8,
    &#39;name&#39;    =>    &#39;Think&#39;,
    &#39;status&#39;  =>    1,
];
$user = User::create($data);
// 获取数据 (支持获取器)
echo $user->name; // 输出 think
// 修改数据 (支持修改器)
$user->name = &#39;ThinkPHP&#39;; // 实际数据变成 thinkphp
// 保存数据到内存 并且调用模型事件
$user->save();
// 获取关联博客数据
$blog = $user->blog()->limit(3)->select();
// 删除数据(同时删除关联博客数据)
$user->together([&#39;blog&#39;])->delete();
登入後複製

由於虛擬模型沒有實際的資料表,所以你不能進行任何的查詢操作,下面的程式碼就會拋出例外:

User::find(1);
// 会抛出下面的异常
// virtual model not support db query
登入後複製

注意,虛擬模型不支援自動時間戳功能(但仍支援時間欄位格式化),如果需要時間欄位需要在實例化的時候傳入。

如果有定義獲取器、修改器及模型事件的話,仍然有效,大家有時間可以測試下。

相關推薦:最新的10個thinkphp影片教學

#

以上是分析ThinkORM新增加的虛擬模型功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)