TP框架----Model模型層---------------作模型對象php
Model模型層是用來作什麼的呢????mysql
主要是用來作操做數據庫訪問的。sql
也就說明TP框架自帶了一種訪問數據庫的方式,使用的是Model模型。數據庫
Model模型怎樣使用呢???緩存
要使用Model模型層訪問數據庫的話,須要作配置,由於必須把數據庫的一些參數配置好以後,才能鏈接,因此找到Config.php服務器
配置文件,打開框架
這些是關於數據庫的配置,分佈式
要把這些粘貼到config.php編碼
進行修改。spa
config.php配置文件(修改配置的地方)
/* 數據庫設置 */
'DB_TYPE' => 'mysql', // 數據庫類型
'DB_HOST' => 'localhost', // 服務器地址
'DB_NAME' => '', // 數據庫名
'DB_USER' => 'root', // 用戶名
'DB_PWD' => '', // 密碼
'DB_PORT' => '3306', // 端口(數據庫的默認端口)
'DB_PREFIX' => '', // 數據庫表前綴
'DB_PARAMS' => array(), // 數據庫鏈接參數
'DB_DEBUG' => TRUE, // 數據庫調試模式 開啓後能夠記錄SQL日誌
'DB_FIELDS_CACHE' => false, // 啓用字段緩存(在開發的時候把它打成false,開發完以後打成true)
'DB_CHARSET' => 'utf8', // 數據庫編碼默認採用utf8
'DB_DEPLOY_TYPE' => 0, // 數據庫部署方式:0 集中式(單一服務器),1 分佈式(主從服務器)
'DB_RW_SEPARATE' => false, // 數據庫讀寫是否分離 主從式有效
'DB_MASTER_NUM' => 1, // 讀寫分離後 主服務器數量
'DB_SLAVE_NO' => '', // 指定從服務器序號
作好配置以後,就能夠鏈接數據庫了。
在這個Main控制器裏寫
首先,作一個方法
造操做方法
function DB()//造操做方法 //這個操做方法要操做數據庫,DB()方法名可隨便起
{
//怎樣使用模型層???
//TP框架裏的Model,咱們要作模型就要寫在Model文件夾下。數據庫裏的每一張表,對應到TP框架裏面就是這個TP框架的類,一張表對應TP框架裏面的一個類,好比Info表對應到TP框架裏面就是一個Info的模型類。表對應的類,表裏的字段(就是列)對應過來就是成員變量。若是使用Info表,所使用的模型實際上就是InfoModel這樣一個類,InfoModel類若是不對Info的模型進行特殊的操做(若是不對Info表進行特殊的操做)作簡單的增刪改查能夠不用作模型文件,能夠是空的即便Model文件夾不作任何的模型文件依然能夠操做數據庫。
只有當表進行了特殊的操做,在作Model文件(模型文件),例如在表裏添加驗證就須要作模型。
//怎樣把模型類拿來使用呢???
//要操做hao表,怎樣作hao模型對象???
//造對象有三種方法::
//1.原始方式(根據命名空間找到類文件才能new出來。使用原始方式就必需要作模型文件了,即便模型文件裏面內容是空的也要作,要有這個文件才能找到這個文件new出來。要用第一種原始方式的話,就要在Model文件夾下建一個文件出來。
建一個模型文件,要操做info表
要操做info表,因此表名打頭(若是數據庫裏的表名是大寫就寫大寫,是小寫就寫小寫)
Model.Class.php(控制器)
這是一個類文件。這個類須要有命名空間。namespace Home\Model; 這個命名空間從根開始它的根是Home,Home模塊下的Model文件夾
這個類也要繼承父類Model類,父類在Library-----Think------Model.class.php
因此要使用它的父類,use Think\Model; Think表明的是這個類所在的根 ,Think文件夾下有個類文件叫Model .class.php
class infoModel extends Model
)
/*$m = new \Home\Model\InfoModel();
var_dump($m);*/
顯示的結果:
InfoModel的對象
關於數據庫的信息
從哪裏看對不對
造的Info表沒有問題的話,這裏就顯示Info表的全部字段。可以看到這個頁面,說明這個Model對象可以造出來,而且數據庫的配置沒有問題,可以找到這張表
//2.使用快捷方法D()
$m = D(); ///返回一個對象
//var_dump($m);
顯示的結果:
造了個父類的對象,就找不到這張表的信息了。由於沒有指定哪一張表因此找不到這張表的信息了。造了個父類的對象,是沒有表的信息的。說明在造對象時,沒有指定操做哪一張表的話,那造出的對象是一個父類對象,父類對象在操做的時候,好比要調用添加,添加數據,不知往哪一張表裏添加,就會出問題。
因此在造的時候就要給它一個表名。
$m = D("Info"); ///返回一個對象
var_dump($m);
顯示結果:
造的對象是InfoModel對象
也就說明,,不用作模型文件,經過D()方法,依然能夠生成InfoModel對象
D()方法,是new的減化版
//3.使用快捷方法M()
$m = M();
var_dump($m);
顯示結果:
造了一個父類對象
說明,使用M()方法也能夠造模型對象
//$m = M("Nation");
//var_dump($m);
顯示結果:
對象是父類對象
這個M()方法和D()方法是有區別的。D()方法至關於new的簡化版,可是M()方法就是來造父類對象的。
M()方法,寫參數和沒有寫參數是不一樣的。
寫參數就有這張表。顯示結果:
只要出現表的字段信息,就能操做這張表。好比字段信息: