thinkphp 學習1-模型

1.用M()方法建立模型類

$model = M("configsettings」);php

2.使用find()方法或select()方法返回結果集

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的全部記錄

 

3.自定義模型類

若是在某個模型類裏面定義了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,以確保可以找到對應的數據表。性能

 

4.模型實例化

直接實例化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方法。

相關文章
相關標籤/搜索