上面例項化的時候我們需要傳入完整的類名,系統提供了乙個快捷方法d用於資料模型的例項化操作。
要例項化自定義模型類,可以使用下面的方式:
<?php
//例項化模型
$user
= d('user');
// 相當於 $user = new \home\model\usermodel();
// 執行具體的資料操作
$user
->
select();
當 \home\model\usermodel 類不存在的時候,d函式會嘗試例項化公共模組下面的 \common\model\usermodel 類。d方法的引數就是模型的名稱,並且和模型類的大小寫定義是一致的。
d方法可以自動檢測模型類,如果存在自定義的模型類,則例項化自定義模型類,如果不存在,則會例項化系統的\think\model基類,同時對於已例項化過的模型,不會重複例項化。
d方法還可以支援跨模組呼叫,需要使用:
//例項化admin模組的user模型
d('admin/user');
//例項化extend擴充套件命名空間下的info模型
d('extend://editor/info');
注意:跨模組例項化模型類的時候 不支援自動載入公共模組的模型類。
d方法例項化模型類的時候通常是例項化某個具體的模型類,如果你僅僅是對資料表進行基本的curd操作的話,使用m方法例項化的話,由於不需要載入具體的模型類,所以效能會更高。
例如:
// 使用m方法例項化
$user
= m('user');
// 和用法 $user = new \think\model('user'); 等效
// 執行其他的資料操作
$user
->
select();
m方法也可以支援跨庫操作,例如:
// 使用m方法例項化 操作db_name資料庫的ot_user表
$user
= m('db_name.user','ot_');
// 執行其他的資料操作
$user
->
select();
m方法的引數和\think\model類的引數是一樣的,也就是說,我們也可以這樣例項化:
$new = m('new','think_',$connection);
// 等效於 $new = new \think\model('new','think_',$connection);
如果你僅僅是使用原生sql查詢的話,不需要使用額外的模型類,例項化乙個空模型類即可進行操作了,例如:
//例項化空模型
$model
=new model();
//或者使用m快捷方法是等效的
$model
= m();
//進行原生的sql查詢
$model
->query('select * from think_user where status = 1');
我們在例項化的過程中,經常使用d方法和m方法,這兩個方法的區別在於m方法例項化模型無需使用者為每個資料表定義模型類,如果d方法沒有找到定義的模型類,則會自動呼叫m方法。
TP 例項化模型
tp 例項化模型 例 new usermodel usermodel new usermodel 庫名.表名 如果傳了 庫名.表名 或 表名 則設定 this name 表名 否則 this name model 的前半部分 this db 方法來連線資料庫 this db 方法中 checktab...
TP3 2例項化複雜模型類
1 表名 xxf witkey member oauth m方法,直接例項化物件 m member oauth xxf witkey db config 具體解析 m方法三個引數 1 表名,無字首 2 字首 3 資料庫配置 資料庫配置資訊預設取的config檔案,如有變動可參照如下 connecti...
模型例項化 thinkphp
當定義了模型之後,需要在操作中將模型例項化才能具體實現模型中的業務邏輯。不同的資料業務規則會有不同的模型定義,而在例項化模型的時候也可能不同。thinkphp 支援如下幾種例項化模型 例項化基礎模型類 例項化其他模型類 例項化使用者自定義模型類 例項化空模型類 thinkphp支援在沒有定義任何模型...