【Thinkphp教程】模型定義

模型類一般位於項目的Lib/Model 目錄下面,當我們創建一個UserModel類的時候,其實已經遵循了系統的約定。模型類的命名規則是除去表前綴的數據表名稱,採用駝峯法命名,並且首字母大寫,然後加上模型類的後綴定義Model,例如:
模型名(類名) 約定對應數據表(假設數據庫的前綴定義是 think_)
UserModel think_user
UserTypeModel think_user_type
如果你的規則和上面的系統約定不符合,那麼需要設置Model類的數據表名稱屬性。
在ThinkPHP的模型裏面,有幾個關於數據表名稱的屬性定義:
屬性 說明
tableName 不包含表前綴的數據表名稱,一般情況下默認和模型名稱相同,只有當你的表名和當前的模型類的名稱不同的時候才需要定義。
trueTableName 包含前綴的數據表名稱,也就是數據庫中的實際表名,該名稱無需設置,只有當上面的規則都不適用的情況或者特殊情況下才需要設置。
dbName 定義模型當前對應的數據庫名稱,只有當你當前的模型類對應的數據庫名稱和配置文件不同的時候才需要定義。
下面舉個例子來加深理解,例如,在數據庫裏面有一個think_categories表,而我們定義的模型類名稱是CategoryModel,按照系統的約定,這個模型的名稱是Category,對應的數據表名稱應該是think_category(全部小寫),但是現在的數據表名稱是think_categories,因此我們就需要設置tableName屬性來改變默認的規則(假設我們已經在配置文件裏面定義了DB_PREFIX 爲 think_)。
  1. protected $tableName = 'categories'; 


注意這個屬性的定義不需要加表的前綴think_
而對於另外一種特殊情況,數據庫中有一個表(top_depts)的前綴和其它表前綴不同,不是think_ 而是 top_,這個時候我們就需要定義 trueTableName 屬性了
  1. protected $trueTableName = 'top_depts'; 


注意trueTableName需要完整的表名定義
除了數據表的定義外,還可以對數據庫進行定義,例如:
  1. protected $dbName = 'top';


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章