TP5模型常用知識點

2021-09-10 17:27:48 字數 1503 閱讀 3199

1.【模型——獲取器】獲取器

(1)獲取器

獲取器的作用是在獲取資料的字段值後自動進行處理,例如,我們需要對狀態值進行轉換,可以使用:

class user extends model

}

資料表的字段會自動轉換為駝峰法,一般status 欄位的值採用數值型別,我們可以通過獲取器定義,自動轉

換為字串描述。

$user = user::get(1);

echo $user->status; // 例如輸出「正常」

1.命名規則   get + 屬性名的駝峰命名+ attr

直接就能在model裡定義:(本示例在usermodel裡定義的(user.php檔案))

eg1:

protected function get***attr($value)
此情景下user表裡是存在***欄位的,***的值為1,2,3三種情況。這個獲取器的作用在於,後台獲取user表的list後,***值仍為1,2,3。前台迴圈呼叫的時候就可以用 此時的就對應成男,女,未知。

2.針對前台需要用到***值1,2,3同時也要用到文字值男,女,未知的時候,這個獲取器就有侷限性了,此時,小夥伴們很容易想到,定義兩個獲取器,乙個存1,2,3另乙個存男,女,未知。ok,這個方法是可行的,在這裡簡單介紹一下我想到的方法,定義乙個獲取器存二維陣列。

eg2:

protected function get***attr($value)
這種情況下,前台就可以直接使用了是1,2,3值的格式。就是男,女,未知的格式。

看到這裡,相信小夥伴們已經蠢蠢欲動了吧,這還不止呢,接下來介紹一下,定義不存在的字段,對映其他表的字段。就可以應用到專案中了。

3.關聯其他表的字段構建user表裡不存在的字段,其他表就以info表為例吧

eg3:

protected function gethosnameattr($value, $data)
在user表裡構造了hos_name欄位,這個例子很簡單,user表的主鍵id是info表的外來鍵info_id,通過這個關係就可以將info裡的字段對映到user表裡,在後台只查詢user表的資料就能用hos_name了,可以省去兩表聯合查詢

4.如果又需要用到值,又需要用到文字的情況,就可以用第二個例子的思路了。

eg4:

protected function getarchivesattr($value, $data)
此示例,在user表裡構建了archives欄位,val存的是info表的archives_id欄位,text是archives_id對應的在表archives裡的name欄位。省去了三表聯合查詢,這樣在後台只需要查詢user表就可以在前台呼叫archives欄位了。

怎樣,是不是你也不自覺得喜歡上了tp5的獲取器,盡情的使用吧,在使用過程中,相信你會有更多感悟的。

tp5 模型關聯

二 文章中用到的表結構 image 表,儲存的位置資訊 banner 推薦位表,儲存推薦位的型別 banner item 表,推薦位中的資訊條目,可以看到它擁有外來鍵 img id theme 表,商品活動主題,包含頭圖,主題圖 product 表,商品表 theme product 表,theme...

tp5模型belongsTo和hasOne的區別

在使用tp5模型的orm的時候出現belongsto和hasone都有表示一對一的關係,但是二者並不相同。以下舉例說明兩者的區別 首先有user表 字段 id name password欄位 然後有user address表 id user id city欄位 在user模型中關聯user addr...

TP5使用模型查詢資料

前提 引入model 1.get 方法,引數為 主鍵值 res user get 1 toarray 方法是將 get的值,轉為陣列 res res toarray get 方法還支援閉包 res user get function query res res toarray dump res 2....