ThinkPHP 數據庫操作,插入,更新,刪除,查詢


ThinkPHP提供了靈活和方便的數據操作方法,不僅實現了對數據庫操作的四大基本操作(CURD):創建、讀取、更新和刪除的實現,還內置了很多實用的數據操作方法,提供了ActiveRecords模式的最佳體驗。

新建記錄  

PHP 代碼

1.  $User->find(2);   

2.  $User->delete(); // 刪除查找到的記錄   

3.  $User->delete('5,6'); // 刪除主鍵為5、6的數據   

4.  $User->deleteAll(); // 刪除查詢出來的所有數據  

PHP 代碼

1.  // 實例化一個User模型對象   

2.    

3.  $User =  new  UserModel();   

4.  // 然后給數據對象賦值   

5.  $User->name = 'ThinkPHP';   

6.  $User->email = 'ThinkPHP@gmail.com';   

7.  // 然后就可以保存新建的User對象了   

8.  $User->add();   

9.  // 如果需要鎖實例化模型對象的時候傳入數據,可以使用   

10.            $data['name'] = 'ThinkPHP';   

11.            $data['email'] = 'ThinkPHP@gmail.com';   

12.            $User =  new  UserModel($data);   

13.            $User->add();   

14.            // 或者直接在add方法傳入要新建的數據   

15.            $data['name'] = 'ThinkPHP';   

16.            $data['email'] = 'ThinkPHP@gmail.com';   

17.            $User =  new  UserModel();   

18.            $User->add($data);   

19.              

20.              

 

一般情況下,應用中的數據對象不太可能通過手動賦值的方式寫入,而是有個數據對象的創建過程。ThinkPHP提供了一個create方法來創建數據對象,然后進行其它的新增或者編輯操作。

PHP 代碼

1.  $User = D("User");   

2.  $User->create(); // 創建User數據對象,默認通過表單提交的數據進行創建   

3.  $User->add(); // 新增表單提交的數據  

Create方法支持從其它方式創建數據對象,例如,從其它的數據對象,或者數組等

PHP 代碼

1.  $data['name'] = 'ThinkPHP';   

2.  $data['email'] = 'ThinkPHP@gmail.com';   

3.  $User->create($data);   

4.  // 從User數據對象創建新的Member數據對象   

5.  $Member = D("Member");   

6.  $Member->create($User);  

 

支持新增多條記錄

PHP 代碼

1.  $User =  new  UserModel();   

2.  $data[0]['name'] = 'ThinkPHP';   

3.  $data[0]['email'] = 'ThinkPHP@gmail.com';   

4.  $data[1]['name'] = '流年';   

5.  $data[1]['email'] = 'liu21st@gmail.com';   

6.  $User->addAll($data);  

在MySql數據庫下面,會自動使用一條SQL語句實現多數據的插入。

查詢記錄

讀取數據庫的記錄我覺得是數據庫操作中的最有意思的一件事情了,寫過文本數據庫的人都知道,保存和刪除數據不難(無非是規范和效率問題),難在可以通過各種方式來查找需要的數據。ThinkPHP通過各種努力,讓數據庫的查詢操作變得輕而易舉,也讓ThinkPHP變得富有內涵。

ThinkPHP有一個非常明確的約定,就是單個數據查詢和多個數據查詢的方法是分開的,或者你會認為有時候自己也不知道要查詢的數據是單個還是多個,但是有一點是明確的,你需要的是返回一個數據還是希望返回的是一個數據集。因為對兩種類型的返回數據的操作方式是截然不同的,無論何種方式的返回,我們都可以直接在模型對象里面操作,當然也一樣可以作為數據傳遞給你需要的變量。

先舉個最簡單的例子,假如我們要查詢主鍵為8的某個用戶記錄,我們可以使用下面的一些方法:

PHP 代碼

1.  $User->find(8);  

這個作為查詢語言來說是最為直觀的,如果查詢成功,查詢的結果直接保存在當前的數據對象中,在進行下一次查詢操作之前,我們都可以提取,例如獲取查詢的結果數據:

PHP 代碼

1.  $name = $User->name;   

2.  $email = $User->email;  

遍歷查詢到的數據對象屬性 

PHP 代碼

1.  foreach  ($User  as  $key=>$val){   

2.    echo($key.':'.$val);   

3.  }   

// 或者進行相關的數據更改和保存操作

也可以用變量保存下來以便隨時使用。 

PHP 代碼

1.  $user = $User->find(8);  

對於上面的查詢條件,我們還可以使用getById來完成相同的查詢

PHP 代碼

1.    $User->getById(8);  

需要注意的是,對於find方法來說,即使查詢結果有多條記錄,也只會返回符合條件的第一條記錄,如果要返回符合要求的所有記錄,請使用findAll方法。

PHP 代碼

1.    // 查詢主鍵為1、3、8的記錄集    

2.    $User->findAll('1,3,8');    

3.    // 遍歷數據列表   

4.    foreach  ($User  as  $vo){   

5.    dump($vo->name);   

6.    }   

更多的查詢操作請參考后面章節的內容。

        

更新記錄

了解了查詢記錄后,更新操作就顯得非常簡單了。 

// 還可以使用下面的方式更新

PHP 代碼

1.  $User->find(1); // 查找主鍵為1的數據   

2.  $User->name = 'TOPThink'; // 修改數據對象   

3.  $User->save(); // 保存當前數據對象   

4.  $User->score = '(score+1)'; // 對用戶的積分加1   

5.  $User->save();  

如果不是使用數據對象的方式來保存,可以傳入要保存的數據和條件 

PHP 代碼

1.  $data['id'] = 1;   

2.  $data['name'] = 'TopThink';   

3.  $User->save($data);  

除了save方法外,你還可以使用setField方法來更新特定字段的值,例如: 

PHP 代碼

1.  $User->setField('name','TopThink','id=1');  

同樣可以支持對字段的操作 

PHP 代碼

1.  $User->setField('score','(score+1)','id=1');   

2.  // 或者改成下面的   

3.  $User->setInc('score','id=1');  

刪除記錄

 如果你的主鍵是自動增長類型,不需要傳入主鍵的值就可以新建數據,並且如果插入數據成功的話,Add方法的返回值就是最新插入的主鍵值,可以直接獲取。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM