模型:
模型是MVC三大組成部分的M(Model),作用是操縱數據,負責與數據表的數據交互
創建模型類:
命名規範:
模型名(要求是不帶前綴的表名並且首字母要大寫)+Model關鍵詞+.class.php
- 按照系統的規範來命名模型類的話,大多數情況下是可以自動對應數據表。
代碼結構規範:
- 第一步:聲明命名空間
- 第二步:映入父類模型
- 第三步:聲明模型並繼承父類
例如:創建一個樹木模型文件
命名:TreeModel.class.php
<?php
//命名空間
namespace Home\Model;
//引用父類模型
use Think\Model;
//聲明模型並繼承父類
class TreeModel extends Model {
}
模型的實例化操作
因爲模型本質是一個類,所以在使用模型的時候需要實例化。
普通實例化方法:
$obj = new 命名空間TreeModel();
快速實例化方法(D和M函數):
區別:
M("表名"):實例化系統附列model,命名空間爲:Think\Model
D("自定義類名"):實例化我們自定義類名,命名空間爲:Admin\Model\類名Model
- D方法功能更強大,因爲後面在自定義模型類中添加很多方法和設置,這時候只能通過實例化D()去調用。
- 如果D方法沒有找到定義的模型類,則會自動調用M方法
D方法:$obj = D(["模型名"]);
實例化我們自己創建的模型(分組/Model目錄中);
- 如果傳遞了模型名,則實例化指定的模型,
- 如果沒有指定或者模型名不存在,則直接實例化父類模型(Model.class.php)。
$User = D('User');//實例化模型
// 相當於 $User = new \Home\Model\UserModel();
// 執行具體的數據操作
$User->select();
當 \Home\Model\UserModel 類不存在的時候,D函數會嘗試實例化公共模塊下面的 \Common\Model\UserModel 類。
D方法還可以支持跨模塊調用,需要使用:
//實例化Admin模塊的User模型
D('Admin/User');
M方法:$obj = M([‘不帶前綴的表名’]);
直接實例化父類模型(Think目錄下的Model.class.php);
- 如果指定了表名,則實例化父類模型的時候關聯指定的表;
- 如果沒有指定表名(沒有傳遞參數)則不關聯表,一般用於執行原生的sql語句(M() -> query(原生的sql語句))。
$User = M('User');// 使用M方法實例化
// 和用法 $User = new \Think\Model('User'); 等效
// 執行其他的數據操作
$User->select();
實例化空模型類:
空模型也能進行數據表的基本操作(CURD),因爲模型繼承了父類,所以可執行基本的操作。