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方法的傳回值就是最新插入的主索引值,可以直接擷取。
echo $user->getLastSql();
http://www.bkjia.com/PHPjc/477477.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/477477.htmlTechArticleThinkPHP提供了靈活和方便的資料操作方法,不僅實現了對資料庫操作的四大基本操作(CURD):建立、讀取、更新和刪除的實現,還內建了很...