$model = M("configsettings」);php
find()只返回一行記錄,select()方法能夠返回多行,能夠結合where()方法按條件查詢。mysql
$model->find(); //返回configsettings表的第一行記錄 //也能夠用 $model->where("")->find(); $model->where('status=1 AND name="thinkphp"')->find(); $model->where("name='thinkphp'")->select(); //返回name=thinkphp的全部記錄
若是在某個模型類裏面定義了connection
屬性的話,則實例化該自定義模型的時候會採用定義的數據庫鏈接信息,而不是配置文件中設置的默認鏈接信息,一般用於某些數據表位於當前數據庫鏈接以外的其它數據庫:sql
<?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類或其子類。thinkphp
模型類的命名規則是除去表前綴的數據表名稱,採用駝峯法命名,而且首字母大寫,而後加上模型層的名稱(默認定義是Model),例如:數據庫
模型名 | 約定對應數據表(假設數據庫的前綴定義是 think_) |
UserModel | think_user |
UserTypeModel | think_user_type |
若是你的規則和上面的系統約定不符合,那麼須要設置Model類的數據表名稱屬性tabName,以確保可以找到對應的數據表。性能
直接實例化spa
能夠和實例化其餘類庫同樣實例化模型類,例如:code
$User = new \Home\Model\UserModel(); $Info = new \Admin\Model\InfoModel(); // 帶參數實例化 $New = new \Home\Model\NewModel('blog','think_',$connection);
D方法實例化blog
上面實例化的時候咱們須要傳入完整的類名,系統提供了一個快捷方法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方法。