模型例項化 thinkphp

2021-06-08 04:46:51 字數 1602 閱讀 7748

當定義了模型之後,需要在操作中將模型例項化才能具體實現模型中的業務邏輯。

不同的資料業務規則會有不同的模型定義,而在例項化模型的時候也可能不同。thinkphp 支援如下幾種例項化模型:

例項化基礎模型類

例項化其他模型類

例項化使用者自定義模型類

例項化空模型類

thinkphp支援在沒有定義任何模型的時候,例項化乙個基礎模型類來進行簡單的 curd 操作:

$user = new model('user');
或者使用 m 快捷方法:

$user = m('user'); // 下面是其他一些對 user 表的操作 $user->select();
上面兩個方法等同,引數為去掉字首的表名(user),且首字母大寫,關於模型命名參見《thinkphp 模型命名規範》。

這種方法只定義了基礎模型,簡單高效,並且支援跨專案呼叫。缺點是因為沒有自定義的模型類,因此無法寫入相關的業務邏輯,只能完成基本的 curd 操作。所以如果只是基本的 curd 操作,建議例項化此種模型型別。

例項化基礎模型類,只能完成基本的 curd 操作。如果只是需要擴充套件一些通用的邏輯,那麼就可以例項化其他模型類:

$user = new commonmodel('user');
或者使用 m 快捷方法:

$user = m('user', 'commonmodel');
commonmodel(對應 lib/model/commonmodel.class.php 檔案)類必須繼承 model 類,如果沒有定義別名匯入的話,放在專案 lib/model 目錄下,系統自動載入。我們可以 在commonmodel 類裡面定義一些通用的邏輯方法,就可以省去為每個資料表定義具體的模型類。

如果專案涉及的表非常多,而只有個別表有一些複雜的業務邏輯需要封裝,那麼上面這兩種模型例項化方式相結合是乙個不錯的選擇。

如果專案有較多的表需要實現邏輯業務,而不僅僅是簡單的 curd 操作,那就需要例項化自定義的模型類,如 usermodel(使用者模型類)、goodsmodel(商品模型類)等。我們在定義的模型類裡面實現邏輯業務,而在操作裡面例項化該模型:

$user = new usermodel();
或者使用 d 快捷方法:

$user = d('user');
當使用到模型裡面的一些高階功能如 自動驗證填充 等,就需要用到 d 例項化模型方法而不能用 m 方法。

預設的 d方法 只能支援呼叫當前專案的模型,如果需要跨專案呼叫,需要使用:

$user = d('user', 'admin'); // 例項化 admin 專案下面的 user 模型 $user = d('admin.user'); // 啟用了專案分組

如果需要使用原生 sql ,需要例項化乙個空模型:

$model = new model(); // 執行原生 sql 語句 $model->query('select * from think_user');
或者使用 m 快捷方法:

$user = m();
本文介紹的模型定義與例項化偏向於理論,但在後面的開發中,對資料的操作都要用到模型的例項化,可根據專案實際情況採取不同的模型例項化方式。

ThinkPHP 例項化模型

1.例項化基本模型 user new model s 引數為 表名,表字首,資料庫連線資訊 後2個已經在config.php中設定 user m s m方法 效果和new model相同 引數相同 data user select dump data 2.例項化使用者自定義模型 user new a...

Thinkphp模型的例項化

thinkphp模型的例項化 是我們在使用thinkphp開發的過程中經常會使用到的,像在需要使用資料表的時候,我們就要經常進行例項化。我們來看乙個模型例項化的例子 user new model user 在thinkphp為我們封裝好了乙個方法m來更加方便的來進行模型的例項化,例如上面的可以寫成 ...

Thinkphp 模型例項化幾種方式

在控制器要查詢資料就要例項化資料表,thinkphp 定義幾種模型例項化方式,下面詳細說說一下 1,直接例項化方法 user new home model usermodel info new admin model infomodel 2,d方法例項化方法 系統提供了乙個快捷方法d用於資料模型的例...