TP框架----Model模型層---------------做模型對象
Model模型層是用來做什么的呢????
主要是用來做操作數據庫訪問的。
也就說明TP框架自帶了一種訪問數據庫的方式,使用的是Model模型。
Model模型怎樣使用呢???
要使用Model模型層訪問數據庫的話,需要做配置,因為必須把數據庫的一些參數配置好之后,才能連接,所以找到Config.php
配置文件,打開
這些是關於數據庫的配置,
要把這些粘貼到config.php
進行修改。
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()方法,寫參數和沒有寫參數是不同的。
寫參數就有這張表。顯示結果:
只要出現表的字段信息,就能操作這張表。比如字段信息: