久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

ThinkPHP開發(fā)指南-模型之獲取字段

來自站長百科
跳轉至: 導航、? 搜索

導航:上一頁


我們在UserModel類里面根本沒有定義任何User表的字段信息,但是系統(tǒng)是如何做到屬性對應數(shù)據(jù)表的字段呢?這是因為ThinkPHP可以在運行時自動獲取數(shù)據(jù)表的字段信息(確切的說,是在第一次運行的時候,而且只需要一次,以后會永久緩存字段信息,除非設置不緩存或者刪除),包括數(shù)據(jù)表的主鍵字段和是否自動增長等等,如果需要顯式獲取當前數(shù)據(jù)表的字段信息,可以使用模型類的getDbFields方法來獲取。如果你在開發(fā)過程中修改了數(shù)據(jù)表的字段信息,可能需要清空Data/_fields目錄下面的緩存文件,讓系統(tǒng)重新獲取更新的數(shù)據(jù)表字段信息。

如果你沒有定義模型類,進行相關操作的時候一樣會生成字段緩存文件。也可以在模型類里面手動定義數(shù)據(jù)表字段的名稱,可以避免IO加載的效率開銷,在模型類里面添加fields屬性即可,定義格式如下:

PHP代碼

class UserModel extends Model{     

protected $fields = array(    

'id',     

'username',     

'email',     

'age',     

'_pk'=>'id',    

'_autoinc'=>true    

)    

}    

其中_pk 表示主鍵字段名稱 _autoinc 表示主鍵是否自動增長類型.可以通過設置DB_FIELDS_CACHE 參數(shù)來關閉字段自動緩存,如果在開發(fā)的時候經(jīng)常變動數(shù)據(jù)庫的結構,而不希望進行數(shù)據(jù)表的字段緩存,可以在項目配置文件中增加如下配置:

PHP代碼

'DB_FIELDS_CACHE'=>false  

調(diào)試模式下面由于考慮到數(shù)據(jù)結構可能會經(jīng)常變動,所以默認是關閉字段緩存的。ThinkPHP的默認約定每個數(shù)據(jù)表的主鍵名采用統(tǒng)一的id作為標識,并且是自動增長類型的。系統(tǒng)會自動識別當前操作的數(shù)據(jù)表的字段信息和主鍵名稱,所以即使你的主鍵不是id,也無需進行額外的設置,系統(tǒng)會自動識別。要在外部獲取當前數(shù)據(jù)對象的主鍵名稱,請使用下面的方法:

PHP代碼

$pk = $Model->getPk();  

目前不支持聯(lián)合主鍵的自動操作。在個別情況下,可能不需要對當前操作的數(shù)據(jù)表進行字段緩存,或許是由于采用了動態(tài)方式或者當前模型根本沒有任何相關的數(shù)據(jù)表,我們可以設置autoCheckFields屬性來關閉某個模型類的字段獲取和緩存。

  • 使用getDbFields方法可以獲取當前數(shù)據(jù)對象的全部字段信息:

PHP代碼

$fields = $User->getDbFields();