標籤:style blog color io os 使用 ar strong 檔案
1.用M()方法建立模型類
$model = M("configsettings”);
2.使用find()方法或select()方法返回結果集
find()只返回一行記錄,select()方法可以返回多行,可以結合where()方法按條件查詢。
$model->find(); //返回configsettings表的第一行記錄//也可以用$model->where("")->find();$model->where(‘status=1 AND name="thinkphp"‘)->find();$model->where("name=‘thinkphp‘")->select(); //返回name=thinkphp的所有記錄
3.自訂模型類
如果在某個模型類裡面定義了connection屬性的話,則執行個體化該自訂模型的時候會採用定義的資料庫連接資訊,而不是設定檔中設定的預設串連資訊,通常用於某些資料表位於當前資料庫連接之外的其它資料庫:
<?php namespace Home\Model;class UserInfoModel extends \Think\Model{ //定義資料庫連接 protected $connection = array( ‘db_type‘ => ‘mysql‘, ‘db_user‘ => ‘root‘, ‘db_pwd‘ => ‘goodtime‘, ‘db_host‘ => ‘localhost‘, ‘db_port‘ => ‘3306‘, ‘db_name‘ => ‘test‘, ‘db_prefix‘=> ‘‘, ‘db_charset‘ => ‘utf8‘ ); protected $tableName = "userinfo"; //定義資料表名 }?>
模型類並非必須定義,只有當存在獨立的商務邏輯或者屬性的時候才需要定義。模型類通常需要繼承系統的\Think\Model類或其子類。
模型類的命名規則是除去表首碼的資料表名稱,採用駝峰法命名,並且首字母大寫,然後加上模型層的名稱(預設定義是Model),例如:
| 模型名 |
約定對應資料表(假設資料庫的首碼定義是 think_) |
| UserModel |
think_user |
| UserTypeModel |
think_user_type |
如果你的規則和上面的系統約定不符合,那麼需要設定Model類的資料表名稱屬性tabName,以確保能夠找到對應的資料表。
4.模型執行個體化
直接執行個體化
可以和執行個體化其他類庫一樣執行個體化模型類,例如:
$User = new \Home\Model\UserModel();$Info = new \Admin\Model\InfoModel();// 帶參數執行個體化$New = new \Home\Model\NewModel(‘blog‘,‘think_‘,$connection);
D方法執行個體化
上面執行個體化的時候我們需要傳入完整的類名,系統提供了一個快捷方法D用於資料模型的執行個體化操作。
要執行個體化自訂模型類,可以使用下面的方式:
<?php//執行個體化模型$User = D(‘User‘);// 相當於 $User = new \Home\Model\UserModel();// 執行具體的資料操作$User->select();?>
D方法的參數就是模型的名稱,並且和模型類的大小寫定義是一致的。
M方法執行個體化模型
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();
執行個體化空模型類
如果你僅僅是使用原生SQL查詢的話,不需要使用額外的模型類,執行個體化一個空模型類即可進行操作了,例如:
//執行個體化空模型$Model = new Model();//或者使用M快捷方法是等效的$Model = M();//進行原生的SQL查詢$Model->query(‘SELECT * FROM think_user WHERE status = 1‘);
執行個體化空模型類後還可以用table方法切換到具體的資料表進行操作
我們在執行個體化的過程中,經常使用D方法和M方法,這兩個方法的區別在於M方法執行個體化模型無需使用者為每個資料表定義模型類,如果D方法沒有找到定義的模型類,則會自動調用M方法。
thinkphp 學習筆記