模型類通常需要繼承系統的\think\model類或其子類,下面是乙個home\model\usermodel類的定義:
namespace
home
\model
;use
think
\model
;class
usermodel
extends
model
其中定義 home 下的model 命名空間 然後引入 think 下的model 類進行繼承
模型類的命名規則是除去表字首的資料表名稱,採用駝峰法命名,並且首字母大寫,然後加上模型層的名稱(預設定義是model),例如:
模型名約定對應資料表(假設資料庫的字首定義是 think_)
usermodel
think_user
usertypemodel
think_user_type
如果你的規則和上面的系統約定不符合,那麼需要設定model類的資料表名稱屬性,以確保能夠找到對應的資料表。
在thinkphp的模型裡面,有幾個關於資料表名稱的屬性定義:
屬性說明
tableprefix
定義模型對應資料表的字首,如果未定義則獲取配置檔案中的db_prefix引數
tablename
不包含表字首的資料表名稱,一般情況下預設和模型名稱相同,只有當你的表名和當前的模型類的名稱不同的時候才需要定義。
truetablename
包含字首的資料表名稱,也就是資料庫中的實際表名,該名稱無需設定,只有當上面的規則都不適用的情況或者特殊情況下才需要設定。
dbname
定義模型當前對應的資料庫名稱,只有當你當前的模型類對應的資料庫名稱和配置檔案不同的時候才需要定義。
這是一般定義 直接根據表明 建立類名對應,當然也有特殊不對應的處理:
如果表名是think_categories 而我們定義的模型是categorymodel(假設我們已經在配置檔案裡面定義了db_prefix
為 think_),
對於這種除了字首沒下劃線區分的 直接用tablename 在類裡面重定義下表名即可
(注意這個屬性的定義不需要加表的字首think_
)
namespace
home
\model
;
use
think
\model
;
class
categorymodel
extends
model
2
、 如果我們需要categorymodel模型對應操作的資料表是top_category
,那麼我們只需要設定資料表字首即可:
namespace
home
\model
;use
think
\model
;class
categorymodel
extends
model
如果你的資料表直接就是category
,而沒有字首,則可以設定tableprefix
為空字串
(沒有表字首的情況必須設定,否則會獲取當前配置檔案中的db_prefix
。)
namespace
home
\model
;use
think
\model
;class
categorymodel
extends
model
4、 對於另外一種特殊情況,我們需要操作的資料表是top_categories
,這個時候我們就需要定義truetablename
屬性
(注意truetablename
需要完整的表名定義。)
namespace
home
\model
;use
think
\model
;class
categorymodel
extends
model
5、 除了資料表的定義外,還可以對資料庫進行定義(用於操作當前資料庫以外的資料表),例如top.top_categories
:
(系統的規則下,tablename會轉換為小寫定義,但是truetablename定義的資料表名稱是保持原樣。)
namespace
home
\model
;
use
think
\model
;
class
categorymodel
extends
model
thinkphp 學習1 模型
model m configsettings find 只返回一行記錄,select 方法可以返回多行,可以結合where 方法按條件查詢。model find 返回configsettings表的第一行記錄 也可以用 model where find model where status 1 an...
ThinkPHP 模型基礎
首先,新建乙個名為thinkphp的資料庫,裡面新建一張表,名為think user。欄位有 id user email date。thinkphp內建了抽象資料庫訪問層,把不同的資料庫操作封裝起來,我們只需要使用公共的db類進行操作。無需針對不同的資料庫寫不同的 和底層實現,db類會自動呼叫相應的...
thinkphp6 0模型篇之模型的獲取器和修改器
1 獲取器的作用是對模型例項的資料做出自動處理 2 乙個獲取器對應模型的乙個特殊方法,改方法為public 3 方法名的命名規範 getfieldattr 4 資料庫表示狀態status欄位採用的是數值,而在頁面上,我們需要輸出status欄位希望是中文,就可以使用獲取器 5 在studnets模型...