内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

ThinkORM新增加的虛擬模型功能有什么作用

本篇內(nèi)容介紹了“ThinkORM新增加的虛擬模型功能有什么作用”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)長期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為祥符企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè),祥符網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

最新版本的ThinkORM增加了一個虛擬模型功能,這個功能早在ThinkPHP3.2版本中出現(xiàn)過,但新版的虛擬模型功能更為強大。

在之前,如果需要進行虛擬模型操作的話,模型類就不能繼承Model類,然后封裝自己的業(yè)務(wù)邏輯,雖然也能滿足部分需求,但無法實現(xiàn)獲取器、修改器以及模型關(guān)聯(lián)的功能,比如:

<?php
namespace app\model;
class User
{
    public function getInfo()
    {
        // 業(yè)務(wù)邏輯代碼
    }
}

新版著重強化了虛擬模型,數(shù)據(jù)只能保存在內(nèi)存中,而且只能通過實例化的方式來創(chuàng)建數(shù)據(jù),虛擬模型可以保留模型的大部分功能,包括獲取器、模型事件,甚至是關(guān)聯(lián)操作,另外一方面也更方便單元測試。

要使用虛擬模型,只需要在模型定義的時候引入Virtual trait,例如:

<?php
namespace app\model;
use think\Model;
use think\model\concern\Virtual;
class User extends Model
{
    use Virtual;
    public function getInfo()
    {
        // 業(yè)務(wù)邏輯代碼
    }
    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');
    }
}

你不需要在數(shù)據(jù)庫中存在有對應(yīng)的user表,但仍然可以進行相關(guān)數(shù)據(jù)操作,下面是一些簡單例子。

// 創(chuàng)建數(shù)據(jù)
$data = [
    'id'      =>    8,
    'name'    =>    'Think',
    'status'  =>    1,
];
$user = User::create($data);
// 獲取數(shù)據(jù) (支持獲取器)
echo $user->name; // 輸出 think
// 修改數(shù)據(jù) (支持修改器)
$user->name = 'ThinkPHP'; // 實際數(shù)據(jù)變成 thinkphp
// 保存數(shù)據(jù)到內(nèi)存 并且調(diào)用模型事件
$user->save();
// 獲取關(guān)聯(lián)博客數(shù)據(jù)
$blog = $user->blog()->limit(3)->select();
// 刪除數(shù)據(jù)(同時刪除關(guān)聯(lián)博客數(shù)據(jù))
$user->together(['blog'])->delete();

由于虛擬模型沒有實際的數(shù)據(jù)表,所以你不能進行任何的查詢操作,下面的代碼就會拋出異常:

User::find(1);
// 會拋出下面的異常
// virtual model not support db query

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

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

“ThinkORM新增加的虛擬模型功能有什么作用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

當前名稱:ThinkORM新增加的虛擬模型功能有什么作用
文章轉(zhuǎn)載:http://www.rwnh.cn/article38/igiosp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站維護外貿(mào)建站、虛擬主機、全網(wǎng)營銷推廣、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
永春县| 水富县| 康马县| 临潭县| 大田县| 新民市| 光山县| 汤阴县| 澳门| 高唐县| 塔城市| 眉山市| 孝感市| 聂荣县| 轮台县| 如皋市| 靖江市| 仪陇县| 兴安县| 来凤县| 米脂县| 孝昌县| 堆龙德庆县| 县级市| 兖州市| 任丘市| 额尔古纳市| 满城县| 喀什市| 北辰区| 寻乌县| 恩施市| 饶河县| 普安县| 平定县| 新野县| 福建省| 滁州市| 定西市| 昭觉县| 和硕县|