1.在項目配置文件下配置數據庫信息
2.創建Model模型類
原則上每個數據表都對應一個Model模型類
3.實例化對象
實例化對象要表現命名空間
實例化普通Model對象
$Model = new \Model\xxxModel();
除了可以實現簡單操作(調用父類Model方法實現
也可以實現一些複雜操作(調用具體普通Model方法實現)
使用D函數實例化
1>實例化父類Model對象===可以用於執行原生SQL語句(普通Model也可以)
$model = D();
2>實例化父類Model對象,同時指定數據表
$goods = D("Goods")實例化父類Model對象,同時操作goods數據表(該方式使得一個數據表即使沒有對應的Model模型類,也不影響操作數據表)
小計:如果一個表沒有特殊的方法要求,就可以通過D(xxx)進行操作。
如果數據表有一個特殊方法要求(例如用戶名和密碼要進行特殊判斷)就需要在普通Model模型類裏邊定義好,通過new 、Model、xxxModel()實例化對象,進而進行操作方法。
4數據庫的查詢操作
調用方法:Model ->select();
具體使用:
$model ->select();//查詢並返回數據表全部記錄信息
$model->select(主鍵id值);//查詢主鍵信息等於id值得記錄
$model->select('id1,id2,id3...'); //查詢主鍵信息在條件範圍內的記錄
(使用select()方法會始終返回一個二維數組信息)
具體數據操作方法使用
1>where()條件
$model->where(條件值);//條件值就是SQL語句where後邊的結果值
2> limit()限制條件
$model->limit(數字);//限制查詢記錄條數
$model->limit(偏移量,長度)//偏移量等於頁碼減1 *長度 不推薦使用
3> fielf()限制條件查詢字段
$model->field(字段1,字段2,字段3);
4> order()排序
$model->order('排序條件'asc/desc);
5> group()分組查詢group by
$model->group(分組條件);
6> having()條件設置方法
having設置查詢條件的效果與where使用效果類似
區別:
where:語句條件字段,必須是 數據表中存在的字段
having:語句條件,必須是結果集中存在的字段
連貫操作
以上具體方法在使用的時候可以一併使用多個,形成連貫操作,並且順序要求
例如:
$obj ->limit()->order()->field->having()->group()
每個方法執行完畢都把參數信息傳遞給成員options,該options形成一個數組系統最後就是遍歷options數組把一個複雜的SQL語句給拼裝起來的
5.數據添加操作
調用方法:model-> add();
具體兩種方式使用:
1>數組方式
$數組 = array{
元素(下標=>元素值),
...
}
下標:必須是數據表字段名稱(否則不添加到數據表記錄裏邊)
$model(普通對象)->add(數組);
數組的元素鍵名與數據表字段名稱必須一致
2> AR(Active Record 活躍記錄)方式
$model -> 屬性(字段) = 值;//屬性字段 與 數據表一致 否則不能寫入數據
$model ->add();
AR規範要求:
1>一個Model模型類與一個具體的數據表對應
2>Model模型類實例化的對象 與 數據表一一對應
3>Model對象的屬性 與 記錄字段對應
TP框架的AR是仿真產品,因爲在每個業務Model模型類裏邊並不存在對應的數據表字段信息。
6.數據修改操作
調用方法 Model 對象 ->save()
與add添加一致,具體有兩種方式使用
1> 數組方式
$model->save(數組);
2> AR方式
$model-> 屬性(字段)= 值;
...
$model->save();
數組元素下標(屬性字段)必須以數據表字段一致
save()方法返回受影響的記錄條數
!!! 數據表修改必須設置條件,主鍵id或者where,二選其一即可 否者操作失敗
7.在後臺實現數據的修改操作
1> get參數的傳遞和接收
pathinfo路由解析方式傳遞get參數信息格式:
http://網址/index.php/分組/控制器/操作方法/名稱/值/名稱/值...
控制器操作方法接收get參數:
並不是直接使用$_GET接收信息,而是通過方法的形式參數接收。
function 方法名稱($名稱,$名稱){}
傳遞的get變量名稱與方法形參變量名稱必須一致
(形參在沒有默認值的情況下,每次請求必須傳值)
8.執行原生SQL語句
$sql = "SQL語句";
1> 查詢語句: $model對象 ->query($sql);//返回一個二維數組
2> 添加/刪除/修改語句 $model對象-> execute($sql); // 返回受影響記錄條數
=========================================================================================
// 跳轉到 edit 操作
$this->redirect('edit');
// 跳轉到 UserAction下的edit 操作
$this->redirect('User/edit');
// 跳轉到 Admin分組默認模塊默認操作
$this->redirect('Admin/');
// 跳轉到 Admin分組Index模塊view操作
$this->redirect('Admin-Index/view');
// 跳轉到 Admin分組Index模塊view操作,uid參數爲1,延遲3秒跳轉
$this->redirect('Admin-Index/view', array('uid'=>1), 3,'頁面跳轉中~')
// 跳轉到 其他OtherApp項目(非分組)的Admin項目分組User模塊view操作
$this->redirect('OtherApp://Admin-User/view');
implode 把數組分成字符串
eg:implode(',',$array);//把$array以 ,分割成字符串