1.TP5模型的概念與基類Model
1.什么是模型?為什么創建模型?
模型是對實體的抽象描述,展示實體的特征
2.ThinkPHP5中的模型指什么?
簡單理解:模型就是一張數據表。
3.模型類Model中有哪些屬性和方法?
2.TP5模型的創建于訪問:實例化與靜態創建
模型與數據表的對應關系:
2.1.模型和數據表的區別于聯系
2.2.如何創建模型
手動模型創建
2.3.如何在控制器中調用模型
示例:實例化創建模型
結果:
示例:靜態創建模型對象
2.4.模型數據訪問方式
外部訪問:
3.TP5模型的CURD操作;
所有模型操作,底層實質是SQL操作。盡可能都采用靜態方法,效率最高,不用實例化。
3.1用模型向數據表中添加數據
創建數據
示例:save()實例化的方式,返回添加的條數
示例:saveAll 實例化方式,批量添加,返回對象
示例:靜態create()添加數據,單條添加,不用實例化,返回值是對象
3.2用模型來更新數據表中的數據
Update更新數據
示例:save
saveAll:
靜態更新方法:不需要實例化模型對象
update(更新數據,更新條件,允許更新的字段)
3.3模型的查詢操作
讀取操作:
find()/get():用法相同
返回查詢到符合條件的第一條記錄
select()/all():返回多條記錄,對象數組
用模型類靜態調用find和get方法:
兩個方法用法相同
select和all:返回對象數組,可以遍歷顯示
總結:多使用get和all來查詢,多使用靜態方法。find和select可用于db類的查詢。
3.4模型的刪除操作
delete操作:返回數量
delete只能刪除一條數據,因為一個模型對象只對應一條數據
destroy:刪除多條記錄,返回數量
4.TP5模型的讀取器與修改器:getAttr()和setAttr()
讀取器,當使用模型讀取字段值的時候,如果在模型中設置了讀取器,就會按照設置的方式讀取數據
示例:
普通寫法:讀取了數據,同時將時間戳轉換成了正常時間格式
當有大量此類數據要讀取時,一個個轉換顯然很麻煩,此時可在模型中設置讀取器:
模型文件:Staff.php
用法:
讀取器工作原理:
模型修改器:
示例:
存入數據時,直接寫日期,而數據表中存的是時間戳,所以可以模型中加入修改器,當寫入日期數據時,自動轉換
模型文件:Staff.php
模型其原理:
5.TP5模型數據類型轉換:$type屬性設置技巧
通過在模型中配置屬性來完成
數據庫查詢,默認取出的數據都是字符串類型
配置好字段對應的數據類型后,數據表中獲取和存入的是不同類型的數據
如果數據處理邏輯不復雜,推薦使用這種方式來替代傳統的讀取器和修改器方法
類型轉換:
模型中配置:
配置好字段對應的數據類型后,數據表中獲取和存入的是不同類型的數據
配置后操作:
數據表中獲取和存入的是不同類型的數據
6.TP5模型數據自動完成設置:
6.1.自動時間戳
當用戶對數據表執行寫操作時,自動記錄寫操作的時間。這里寫操作指的是新增與更新,不包括刪除。
在Model.php中開啟
將Model.php中相關代碼,復制到模塊文件Staff.php中
示例:
6.2.自動完成
自動完成:用戶向表中添加或更新數據時,沒有設置的字段值,由系統自動配置
自動完成需要下面幾個屬性配合:
從Model.php將上表幾個屬性復制到模型文件Staff.php中
示例:創建
創建一個字段值,其他為空。
可以看到,其他數據由系統自動填入了默認值
更新:將數據id字段對應的值更新一下
模型中屬性設置如下:
更新完成后:
對應的屬性,系統自動該為默認值
更新和新增都默認的數據,在auto中設置: