thinkPHP常用數據操作(一)CURD

url訪問格式

localhost/index.php/home/index/read/id/1/name/namestr

/*解釋

該url格式是tp默認的pathinfo格式

localhost ip地址

index.php 入口文件

home 模塊名

index 控制器名(類)

read 操作名(控制器類的函數)

id 參數名

1 參數值

name 參數名

namsstr 參數值

參數可以有多個

*/

數據操作(ActiveRecor模式)

1插入

(1)表單提交方式

$Form = D('Form');//D函數屬於自定義類FormModel 的函數,該類繼承自Model 
if($Form->create()) {//這兩句把表單的提交內容存入數據庫,並且保存之前執行自動驗證和自動完成
$result = $Form->add();//如果你的主鍵是自增類型的話,add方法的返回值就是該主鍵的值。不是自增主鍵的話,返回值表示插入數據的個數。如果返回false則表示寫入出錯
if($result) {
$this->success('數據添加成功!');
}else{
$this->error('數據添加錯誤!');
}
}else{
$this->error($Form->getError());
}

//模型名+Model.class.php (模型名的定義採用駝峯法並且首字母大寫)。控制器定義類似。

use Think\Model;
class FormModel extends Model {
// 定義自動驗證
protected $_validate = array(
array('title','require','標題必須'),
);
// 定義自動完成
protected $_auto = array(
array('create_time','time',1,'function'),//自動填寫create_time字段
);
}

(2)不需要經過表單,直接存入數據庫

$Form = D('Form');
$data['title'] = 'ThinkPHP';
$data['content'] = '表單內容';
$Form->add($data);


2讀取數據

$Form = M('Form');//使用系統基礎類Model,訪問根據數據表Form創建對象$Form
$data = $Form->find($id);

//find方法是基礎模型類Model中的方法.主鍵爲$id值


if($data) {
$this->assign('data',$data);// 模板變量賦值
}else{
$this->error('數據錯誤');
}
$this->display();

//find方法,如果帶參數,就只能是主鍵ID,這樣能返回對應數據,如果不帶參數,返回的是所查詢數據集的第一條記錄,類似limit(1)這樣的.返回結果格式如下

array(
'id' => 5,
'title' => '測試標題',
'content' => '測試內容',
'status' => 1,
)


如果你只需要查詢某個字段的值,還可以使用getField方法

$Form = M("Form");
$title = $Form->where('id=3')->getField('title');


3更新數據

<FORM method="post" action="__URL__/update">
......
</FORM>


$Form = D('Form');
if($Form->create()) {
$result = $Form->save();
if($result) {
$this->success('操作成功!');
}else{
$this->error('寫入錯誤!');
}
}else{
$this->error($Form->getError());
}

//直接更新,不經過表單

$Form = M("Form");
// 要修改的數據對象屬性賦值
$data['id'] = 5;
$data['title'] = 'ThinkPHP';
$data['content'] = 'ThinkPHP3.2.3版本發佈';
$Form->save($data); // 根據條件保存修改的數據

//也可以顯式的傳入條件

$data['title'] = 'ThinkPHP';
$data['content'] = 'ThinkPHP3.2.3版本發佈';

$Form->where('id=5')->save($data); // 根據條件保存修改的數據

//save方法的返回值是影響的記錄數,如果返回false則表示更新出錯

//有些時候,我們只需要修改某個字段的值,就可以使用setField方法,而不需要每次都調用save方法

$Form = M("Form");
// 更改title值
$Form->where('id=5')->setField('title','ThinkPHP');

//對於統計字段,系統還提供了更加方便的setInc和setDec方法。

/$User = M("User"); // 實例化User對象
$User->where('id=5')->setInc('score',3); // 用戶的積分加3
$User->where('id=5')->setInc('score'); // 用戶的積分加1
$User->where('id=5')->setDec('score',5); // 用戶的積分減5
$User->where('id=5')->setDec('score'); // 用戶的積分減1


4 刪除數據

$Form = M('Form');
$Form->delete(5);//5表示主鍵的值

//也可以根據條件執行刪除操作

$User = M("User"); // 實例化User對象
$User->where('id=5')->delete(); // 刪除id爲5的用戶數據
$User->delete('1,2,5'); // 刪除主鍵爲1,2和5的用戶數據
$User->where('status=0')->delete(); // 刪除所有狀態爲0的用戶數據


注:active record模式:

就是用一個AR類關聯數據庫的一張表,每個AR對象對應表中的一行數據;對象的屬性映射到數據行的對應列



以上內容大部分摘自 thinkphp3.2.3快速入門,詳情請參考官方手冊

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