ThinkPHP 之 curd 操作_PHP教程

來源:互聯網
上載者:User
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):建立、讀取、更新和刪除的實現,還內建了很...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.