thithinkphp Model筆記

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以 ,分割成字符串





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章