国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

模型概念和基本操作

Original 2018-12-21 12:40:41 312
abstract:一、創(chuàng)建模型1. 編程方式: application/index/model/Staff.php2. 命令方式:(1)切換think命令所在目錄下;(1)運行: php think make:model index/Staff,自動創(chuàng)建index/model/Staff.php,如果沒有model目錄,則自動創(chuàng)建;(2)運行: php think make:model Staff,如果省略模塊名,

一、創(chuàng)建模型

1. 編程方式: application/index/model/Staff.php

2. 命令方式:

(1)切換think命令所在目錄下;

(1)運行: php think make:model index/Staff,自動創(chuàng)建index/model/Staff.php,如果沒有

model目錄,則自動創(chuàng)建;

(2)運行: php think make:model Staff,如果省略模塊名,默認(rèn)為common模塊,

模型位于:application/common/model/Staff.php,common模塊如果不存在也會自動創(chuàng)建;

3. 默認(rèn)情況下:Staff模型與數(shù)據(jù)表staff對應(yīng)

 

--------------------------------------------------------------------------------

 

二、調(diào)用模型

use app\index\model\Staff;

1. 實例化調(diào)用: $staff = new Staff();

2. 靜態(tài)查詢調(diào)用: $staff = Staff::get();

3. 助手函數(shù)調(diào)用: $staff = model('Staff');

不推薦用助手函數(shù),因為model()無法調(diào)用模型靜態(tài)方法

 

 

 

一、Db與模型的區(qū)別與聯(lián)系?

1.Db和模型的職責(zé)和定位不同;

2.Db負責(zé)的只是數(shù)據(jù)(表)訪問;

3.模型是業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯的完美封裝;

4.Db是模型的基礎(chǔ),模型最終實現(xiàn)依賴Db實現(xiàn);

5.重點來了:Db返回是數(shù)組,模型返回的是對象

可能同學(xué)們一時對這些描述不是很理解,相信隨著學(xué)習(xí)的深入和開發(fā)經(jīng)驗的積累,會對模型有更深的理解。

 

--------------------------------------------------------------------------------

 

二、模型與數(shù)據(jù)表之間的關(guān)系

1.模型本質(zhì)是一個類,繼承自框架的think\Model.php類;

2.模型大多與一張數(shù)據(jù)表對應(yīng),但并不總是這樣;

3.模型支持ORM(對象關(guān)系映射);

4.模型對應(yīng)數(shù)據(jù)表,而模型實例(對象)對應(yīng)表中的一條記錄

5.模型支持更多的業(yè)務(wù)處理功能:自動完成,自動轉(zhuǎn)換,自動驗證等等,這是Db不具備的

 

--------------------------------------------------------------------------------

 

三、關(guān)于Db與模型的幾個誤區(qū)

1.認(rèn)為模型效率不如直接操作Db,其實這點差別相對模型的便利性,簡直可以直接忽略;

2.認(rèn)為為每張數(shù)據(jù)表創(chuàng)建模型無意義,還麻煩,其實這是不對的,通過模型操作數(shù)據(jù)其實更加的安全可靠;

3.認(rèn)為模型的操作不容易掌握,概念不容易理解,恰恰相反,模型相對Db更加的人性,也更貼近開發(fā)需求;

 

--------------------------------------------------------------------------------

 

四、模型的優(yōu)勢

1.可以更優(yōu)雅的操作數(shù)據(jù),完全面向?qū)ο缶幊?

2.可以更加的直觀的實現(xiàn)多表的關(guān)聯(lián)操作;

3.可以最大限度的保證用戶數(shù)據(jù)的安全性和完整性;

4.可以非常方便的擴充業(yè)務(wù)邏輯功能;

5.可以極大的減少控制器中的業(yè)務(wù)邏輯代碼.

 

--------------------------------------------------------------------------------

 

五、改進要求

1.如果模型中寫了很少的代碼,甚至是空模型,那么要檢查你的業(yè)務(wù)規(guī)劃是不是有了問題

2.如果控制器中寫了大量的數(shù)據(jù)處理代碼,那么最好將這些代碼移到模型中去統(tǒng)一處理

 

 

一、獲取器的創(chuàng)建與使用

1.獲取是寫在模型類中的一個方法

2.當(dāng)用戶通過模型獲取表中數(shù)據(jù)時會自動觸發(fā),但也并非絕對如此

3.主要應(yīng)用場景:用于從數(shù)據(jù)表中讀取數(shù)據(jù)

(1)時間日期字段的格式化輸出;

(2)集合或枚舉類型的輸出;

(3)數(shù)字狀態(tài)字段的輸出;

(4)組合字段的輸出

4. 獲取器方法命名規(guī)則:

get字段名Attr(字段值[,所有字段]),例如 getBirthdayAttr($value)

5. 可以讀取不存在的字段信息

 

--------------------------------------------------------------------------------

 

二、修改器的創(chuàng)建與使用

1.修改器也是模型類中的一個方法

2.使用場景:

(1)時間日期字段的轉(zhuǎn)換寫入;

(2)集合或枚舉類型的寫入;

(3)數(shù)字狀態(tài)字段的寫入;

(4)某個字段涉及其它字段的條件或者組合寫入

2.在以下5種情況下會觸發(fā)修改器工作

(1)模型對象賦值;

(2)調(diào)用模型的data方法,并且第二個參數(shù)傳入true;

(3)調(diào)用模型的save方法,并且傳入數(shù)據(jù);

(4)顯式調(diào)用模型的setAttr方法;

(5)定義了該字段的自動完成;

 

--------------------------------------------------------------------------------

 

三、自動時間戳

1.添加與更新數(shù)據(jù)時,將時間自動寫入到指定字段中

2.可以全局開啟,也可以在模型中單獨開啟

(1)全局設(shè)置:config/database.php

  // 自動寫入時間戳字段

      'auto_timestamp'  => false, //改為true

      如果當(dāng)前模型中不需要自動時間戳功能,請手動關(guān)閉

      protected $autoWriteTimestamp = false;

(2)模型設(shè)置:

protected $autoWriteTimestamp = true;

**建議在模型中單獨開啟,這樣最靈活,畢竟不是每一張表都需要時間戳字段

3.一旦開啟該功能,用戶更新或添加數(shù)據(jù)時會自動將操作時間寫入到以下二個字段

(1)新增時間: create_time

(2)更新時間: update_time

以上這二個字段名是默認(rèn)值,可以在模型中重新定義

4.不需要為這二個字段設(shè)置修改器,框架會自動處理

 

--------------------------------------------------------------------------------

 

三、類型轉(zhuǎn)換

1.表中取出的數(shù)據(jù),默認(rèn)為字符類型

2.在模型中配置: protected $type = ['字段名' => '類型名稱',...]

3.類型中沒有字符型,因為它是默認(rèn)類型,無須轉(zhuǎn)換

--------------------------------------------------------------------------------

 

四、自動完成

1. 自動完成必須要配合修改器工作;

2. 自動完成是針對寫操作: 新增與更新

3. 通過在模型中設(shè)置三個屬性來配置

4. protected $insert = []; 新增時自動完成

5. protected $update = []; 更新時自動完成

6. protected $auto = []; 新增或更新時自動完成

7. 類似于給表中字段設(shè)置默認(rèn)值

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Correcting teacher:天蓬老師Correction time:2018-12-21 12:58:36
Teacher's summary:模型是數(shù)據(jù)與業(yè)務(wù)的封裝,最好的封裝形式當(dāng)然是類了, 所以模型就是一個類,實例化之后,與一張表對應(yīng),這么簡單,好用

Release Notes

Popular Entries