a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > PHP > 正文

如何自定義一個Model?ThinkPHP3.2自定義基類Model的

2020-03-24 18:56:46
字體:
供稿:網(wǎng)友
本篇文章給大家?guī)淼膬?nèi)容是關(guān)于如何自定義一個Model?ThinkPHP3.2自定義基類Model的用法,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。

ThinkPHP 提供了一個 Model 類,供其他的 Model 進(jìn)行繼承。Model 類中是 MVC 中的模型類,它是調(diào)用 持久層 的上層類。感覺這么描述問題很多,但是有什么辦法呢?但是,這個 Model 有時無法滿足我們的一些需求,因此我們需要自定義一個 Model 類出來,不過自定義的 Model 同樣要繼承 TP 提供的 Model 類,而把我們自定義的 Model 類作為我們項(xiàng)目中的 Model 基類。我怎么感覺我在說繞口令,等等...我有點(diǎn)暈。

無聊的需求

在使用 Java 的開源項(xiàng)目 JeeSite 時,養(yǎng)成了一個不好的習(xí)慣,習(xí)慣給每張表都增加 create_by、create_date、update_by、update_date、remarks 和 del_flag 這么幾個字段。如果每張表都有這幾個字段,那么對每張表進(jìn)行 insert 時都會對以上的字段進(jìn)行設(shè)置,對每張表進(jìn)行 update 時都會對其中部分字段進(jìn)行更新,對每條記錄進(jìn)行 delete 時都其實(shí)是對 del_flag 字段進(jìn)行 置位。重復(fù)操作很多,一些操作方法被修改。那么,這個時候就要自定義一個自己的 Model 來作為項(xiàng)目的 基類 了,這個 Model 就負(fù)責(zé)干上面我說的那些事情了。

自定義一個 Model

自定義一個 Model,Model 中至少重新 TP 提供的 Model 中的 add、save、delete 和 select 方法。

定義代碼如下:

 ?phpnamespace Admin/Model;use Think/Model; * 項(xiàng)目中其他 Model 類的基類 * 該類繼承自 TP 提供的基類 Modelhtml' target='_blank'>class BaseModel extends Model { * 繼承基類 Model 的 add 方法 * 自動插入 id create_by create_date update_by update_date del_flag public function add($data= ,$options=array(),$replace=false) { $data[ id ] = $this- getUuid(); $data[ create_by ] =  $data[ create_date ] = date( Y-m-d H:i:s  $data[ update_by ] =  $data[ update_date ] = date( Y-m-d H:i:s  $data[ del_flag ] = 0  return parent::add($data, $options, $replace); * 獲得 未刪除 的所有數(shù)據(jù) * 記錄是否被刪除通過 del_flag 字段來進(jìn)行確定 public function select($options=array()) { $map[ del_flag ] = 0; $this- where($map); return parent::select($options); * 獲取 全部 的所有數(shù)據(jù) public function selectAll($options=array()) { return parent::select($options); * 更新數(shù)據(jù) * 更新數(shù)據(jù)時,要更新 update_by update_date 兩個字段 public function save($data= ,$options=array()) { $data[ update_by ] =  $data[ update_date ] = date( Y-m-d H:i:s  return parent::save($data, $options); * 刪除也是更新 * 設(shè)置 刪除 標(biāo)志位即可 public function delete($data= ,$options=array()) { $data[ del_flag ] = 1; return parent::save($data, $options); }

這樣,我們的 BaseModel 就定義好了,以后項(xiàng)目中的 Model 就不再繼承 TP 的 Model 類了,而是繼承我們自定義的 BaseModel 了。

繼承我們定義的基類

繼承的 BaseModel 的方法和繼承 Model 的方法是一樣的,只是使用 use 引入命名空間到當(dāng)前作用域時的需要修改為我們的命名空間,而不是再去使用 TP 提供的命名空間。代碼如下:

1 ?php2 namespace Admin/Model;3 use Admin/Model/BaseModel;5 class TrunkModel extends BaseModel {

use 引入的命名空間是 Admin/Model/BaseModel ,因?yàn)槲覀兌x的 BaseModel 的命名空間是 Admin/Model,因?yàn)檫@里的 TrunkModel 和 BaseModel 在一個命名空間下,省去 use 也是可以的。

這樣,在我們用 D 方法實(shí)例化 TrunkModel 的對象后,使用 add 方法插入數(shù)據(jù)時,就會先調(diào)用 BaseModel 中的 add 方法了,這樣我們每張表都有的 create_by 等一系列字段就都會自動得到了。

相關(guān)文章推薦:

thinkphp5框架與Android實(shí)現(xiàn)二維碼的生成代碼

Thinkphp批量下載圖片和文件件的代碼實(shí)例

php的curl中post方式和get方式的請求代碼

以上就是如何自定義一個Model?ThinkPHP3.2自定義基類Model的用法的詳細(xì)內(nèi)容,PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美黄视频在线观看 | 精品一区二区三区在线观看视频 | 欧美日本一区二区三区 | 欧美精品一区二区免费 | 三级视频网站在线观看 | 欧美日韩在线视频一区二区 | 黄色污网站 | 3bmm在线观看视频免费 | 欧美成人精品一区二区男人看 | 久久九九视频 | 天堂一区二区三区四区 | 天天色影视综合 | 欧美日韩免费在线 | 91国内精品久久 | 亚洲视频欧美视频 | 婷婷欧美| 天天草天天干 | 国产人成免费视频 | 丝袜+亚洲+另类+欧美+变态 | 黄色片免费看 | 亚洲国产精品久久久 | 亚洲欧美日韩另类精品一区二区三区 | 国产精品日韩精品 | 国产精品视频一区二区三区 | 国产成人av免费 | 国产精品视频一区二区三区四区五区 | 午夜精品影院 | 日本亲与子乱xxx | 国产a免费| 欧美日韩精品一区二区在线观看 | 久久99欧美 | 欧美中文字幕在线 | 久久88| 一区二区三区视频在线 | 国产精品美女视频免费观看软件 | 亚洲精品在线国产 | 97狠狠| 99久久精品一区二区 | 国产欧美一区二区精品性色 | 人善交video另类hd国产片 | 午夜精品一区二区三区在线观看 |