thinkphp3.2.3開發手冊,第 39 章 ThinkPHP--模型初步(下)

 2023-11-07 阅读 21 评论 0

摘要:當然,如果有必要使用具體的模型類時,ThinkPHP 還提供了 D()方法來直接是實例化 模型類,并且還可以免去引入命名空間等操作。 thinkphp3.2.3開發手冊。//實例化UserModel類 $user = D('User'); PS:使用 D()方法比直接使用模型類更加的

當然,如果有必要使用具體的模型類時,ThinkPHP 還提供了 D()方法來直接是實例化 模型類,并且還可以免去引入命名空間等操作。

thinkphp3.2.3開發手冊。//實例化UserModel類 $user = D('User');

PS:使用 D()方法比直接使用模型類更加的智能,如果在\Home\Model\UserModel 找不到該模型類,那么就會去公共模塊下找\Common\Model\UserModel 去找。

如果還找不到, 就會直接實例化基類 Model()類,也就是等同于使用 M()方法。

D()方法可以直接調用當前模塊的模型類,那么如果跨模塊調用的話,那怎么處理呢?

比如 Admin 后臺模塊,可以使用目錄聲明。

//跨模塊實例化 $user = D('Admin/User'); 有時,你可能想使用原生的 SQL 語句進行操作數據庫。

那么可以采用實例化空模型基 類或者空 M()方法。

//空 M()方法 $user = M(); //或者new Model();

空基類 var_dump($user->query("SELECT * FROM think_user WHERE user='蠟筆小新 '")); 

?

三.字段定義 每個模型類操作著每個對應的數據表,在大多數情況下,系統會自動獲取當前數據表的 字段信息。

而當模型類第一次實例化時,系統會自動緩存字段,并且永久緩存,除非刪除了 運行時緩存或者設置不緩存。

如果調試模式下,則不會生成字段緩存文件,每次都是從數據表里重新獲取。

生成緩存 的目的顯而易見,就是為了快速響應。ThinkPHP 默認是開啟字段緩存,因為在實際運行中, 不會更改字段結構。

字段緩存文件保存在 Runtime/Data/_fields/目錄里,當你在開發階段,字段和表會經常 變動,所以要關閉緩存。

關閉緩存的方法為: // 關閉字段緩存 'DB_FIELDS_CACHE'=>false //開啟了調試模式,自動關閉 PS:如果開啟緩存狀態,新增了字段,那么可能新字段無法刷新出來,必須刪除 /Data/_fields 文件夾,重新獲取字段。//查看字段結構 var_dump($user->getDbFields());

?

你也可以使用手動定義數據表字段的方式取代字段緩存方式,這種方式可以提高性能, 避免 IO 開銷。

//手動定義數據表字段,_pk表示主鍵 class UserModel extends Model { protected $fields = array('id', 'user', '_pk'=>'id'); }

//type 定義每個字段的類型,可以永遠字段驗證

class UserModel extends Model { protected $fields = array('id', 'user', '_pk'=>'id', 'type'=>array('id'=>'smallint','user'=>'varchar')); }

?

轉載于:https://www.cnblogs.com/yu520zhong/p/4852689.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/167780.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息