tp中遇到的相關(guān)方法

getDbFields
這個(gè)方法在tp手冊(cè)的字段定義中
通常每個(gè)模型類(lèi)是操作某個(gè)數(shù)據(jù)表,在大多數(shù)情況下漠酿,系統(tǒng)會(huì)自動(dòng)獲取當(dāng)前數(shù)據(jù)表的字段信息。
系統(tǒng)會(huì)在模型首次實(shí)例化的時(shí)候自動(dòng)獲取數(shù)據(jù)表的字段信息(而且只需要一次谎亩,以后會(huì)永久緩存字段信息炒嘲,除非設(shè)置不緩存或者刪除),如果是調(diào)試模式則不會(huì)生成字段緩存文件匈庭,則表示每次都會(huì)重新獲取數(shù)據(jù)表字段信息夫凸。
字段緩存保存在Runtime/Data/_fields/
目錄下面,緩存機(jī)制是每個(gè)模型對(duì)應(yīng)一個(gè)字段緩存文件(注意:并非每個(gè)數(shù)據(jù)表對(duì)應(yīng)一個(gè)字段緩存文件)阱持,命名格式是:
數(shù)據(jù)庫(kù)名.數(shù)據(jù)表前綴+模型名(小寫(xiě)).php

demo.think_user.php // User模型生成的字段緩存文件
demo.top_article.php // Article模型生成的字段緩存文件

字段緩存包括數(shù)據(jù)表的字段信息夭拌、主鍵字段和是否自動(dòng)增長(zhǎng),如果開(kāi)啟字段類(lèi)型驗(yàn)證的話還包括字段類(lèi)型信息等等衷咽,無(wú)論是用M方法還是D方法鸽扁,或者用原生的實(shí)例化模型類(lèi)一般情況下只要是不開(kāi)啟調(diào)試模式都會(huì)生成字段緩存(字段緩存可以單獨(dú)設(shè)置關(guān)閉)。
可以通過(guò)設(shè)置DB_FIELDS_CACHE
參數(shù)來(lái)關(guān)閉字段自動(dòng)緩存镶骗,如果在開(kāi)發(fā)的時(shí)候經(jīng)常變動(dòng)數(shù)據(jù)庫(kù)的結(jié)構(gòu)桶现,而不希望進(jìn)行數(shù)據(jù)表的字段緩存,可以在項(xiàng)目配置文件中增加如下配置:

// 關(guān)閉字段緩存
'DB_FIELDS_CACHE'=>false

注意:調(diào)試模式下面由于考慮到數(shù)據(jù)結(jié)構(gòu)可能會(huì)經(jīng)常變動(dòng)卖词,所以默認(rèn)是關(guān)閉字段緩存的。
如果需要顯式獲取當(dāng)前數(shù)據(jù)表的字段信息,可以使用模型類(lèi)的getDbFields方法來(lái)獲取當(dāng)前數(shù)據(jù)對(duì)象的全部字段信息此蜈,例如:

$User = M('User');
$fields = $User->getDbFields();

如果你在部署模式下面修改了數(shù)據(jù)表的字段信息即横,可能需要清空Data/_fields目錄下面的緩存文件,讓系統(tǒng)重新獲取更新的數(shù)據(jù)表字段信息裆赵,否則會(huì)發(fā)生新增的字段無(wú)法寫(xiě)入數(shù)據(jù)庫(kù)的問(wèn)題东囚。

如果不希望依賴(lài)字段緩存或者想提高性能,也可以在模型類(lèi)里面手動(dòng)定義數(shù)據(jù)表字段的名稱(chēng)战授,可以避免IO加載的效率開(kāi)銷(xiāo)页藻,例如:

namespace Home\Model;
use Think\Model;
class UserModel extends Model 
{ 
protected $fields = array('id', 'username', 'email', 'age');
 protected $pk = 'id';
//pk屬性定義當(dāng)前數(shù)據(jù)表的主鍵名,默認(rèn)值就是id植兰,因此如果是id的話可以無(wú)需定義
}

如果你的數(shù)據(jù)表使用了復(fù)合主鍵份帐,可以這樣定義:

namespace Home\Model;
use Think\Model;
class ScoreModel extends Model {
 protected $fields = array('user_id', 'lession_id','score'); 
protected $pk = array('user_id','lession_id');
}

除了可以設(shè)置數(shù)據(jù)表的字段之外,我們還可以定義字段的類(lèi)型楣导,用于某些驗(yàn)證環(huán)節(jié)废境。例如:

namespace Home\Model;
use Think\Model;
class UserModel extends Model {
  protected $fields = array('id', 'username', 'email', 'age', '_type'=>
array('id'=>'bigint','username'=>'varchar','email'=>'varchar','age'=>'int') );}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市筒繁,隨后出現(xiàn)的幾起案子噩凹,更是在濱河造成了極大的恐慌,老刑警劉巖毡咏,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驮宴,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡呕缭,警方通過(guò)查閱死者的電腦和手機(jī)堵泽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)臊旭,“玉大人落恼,你說(shuō)我怎么就攤上這事±胙” “怎么了佳谦?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)滋戳。 經(jīng)常有香客問(wèn)我钻蔑,道長(zhǎng),這世上最難降的妖魔是什么奸鸯? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任咪笑,我火速辦了婚禮,結(jié)果婚禮上娄涩,老公的妹妹穿的比我還像新娘窗怒。我一直安慰自己映跟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布扬虚。 她就那樣靜靜地躺著努隙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辜昵。 梳的紋絲不亂的頭發(fā)上荸镊,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音堪置,去河邊找鬼躬存。 笑死,一個(gè)胖子當(dāng)著我的面吹牛舀锨,可吹牛的內(nèi)容都是我干的岭洲。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼雁竞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼钦椭!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起碑诉,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤彪腔,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后进栽,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體德挣,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年快毛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了格嗅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唠帝,死狀恐怖屯掖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情襟衰,我是刑警寧澤贴铜,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站瀑晒,受9級(jí)特大地震影響绍坝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜苔悦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一轩褐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧玖详,春花似錦把介、人聲如沸勤讽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)地技。三九已至,卻和暖如春秒拔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背飒硅。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工砂缩, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人三娩。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓庵芭,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親雀监。 傳聞我的和親對(duì)象是個(gè)殘疾皇子双吆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容