久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

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

      本文由thinkphp框架教程欄目給大家介紹分析ThinkORM新增加的虛擬模型功能,希望對(duì)需要的朋友有所幫助!

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

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

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

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

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

      <?php namespace appmodel; use thinkModel; use thinkmodelconcernVirtual; 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ù)庫(kù)中存在有對(duì)應(yīng)的user表,但仍然可以進(jìn)行相關(guān)數(shù)據(jù)操作,下面是一些簡(jiǎn)單例子。

      // 創(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í)際數(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ù)(同時(shí)刪除關(guān)聯(lián)博客數(shù)據(jù)) $user->together(['blog'])->delete();

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

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

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

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

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)