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....