ThinkPHP的CURD操做

CURD:create(建立)、update(更新)、read(讀取)、delete(刪除)php

1.數據對象建立(create):
  a.TP提供了create方法迅速的建立數據對象,可一自動的根據表單數據建立對象,支持數組,對象,甚至能夠把一個數據對象建立給一個新的數據對象,如:
    $User=M('User');
    $User->name='ThinkPHP';
    $User->email='ThinkPHP@gmail.com';
    $Member=M('Member');
    $Member->create($User);
  b.create方法的第二個可選參數可一指定當前的數據操做狀態(插入:Model::MODEL_INSERT或是1;更新:Model::MODEL_UPDATE或是2);
    默認狀況下會自動判斷數據的操做狀態:首先要求操做的數據有數據庫中對應的主鍵字段,不然不會操做成功;若是須要操做的數據的主鍵字段值已經存
    在於數據表中,則系統自動斷定操做的模式爲update模式;若是要操做的數據的主鍵的主鍵值不存在於數據表中,則系統自動斷定操做的模式爲insert模式。
  c.create方法建立的數據對象是保存在內存中的,並無保存到數據表中,所以咱們在數據保存到數據表以前能夠對已經建立愛的數據對象進行更改,知道調
    用了save或是add方法;
  d.若是咱們有自定義模型類,對於數據新增和編輯操做的話,咱們還能夠設置insertFields和updateFields屬性來定義容許的子字段,如:
    namespace Home\Think;
    use Think\Model;
    class UserModel extends Model{
 protected $insertFields='name,email';//新增數據時容許寫入name和email字段
        protected $updateFields='email';//更新數據時容許寫入email字段
    }
  e.create方法並不是連貫操做,其返回值多是布爾值,所以須要嚴格的判斷。數據庫

2.數據寫入:TP主要提供了add方法和addAll方法;
  a.add方法略;
  b.addAll方法主要用於批量添加數據和批量替換數據,如:
    $dataList[]=array('name'=>'ThinkPHP','email'=>'ThinkPHP@gmail.com');
    $dataList[]=array('name'=>'OneThink','email'=>'OneThink@gmail.com');
    $User->addAll($dataList);數組

3.數據讀取(read):讀取數據主要分爲讀取數據、數據集、字段值;
  a.讀取數據—find
    其實就是讀取一行數據,主要經過find()來實現;
    若是查詢出錯,返回值爲false;若是查詢值爲空,返回值爲NULL;若是查詢成功,則返回一個關聯數組(以字段名做爲鍵值);
    即便有多個知足條件的返回值,find()永遠只放回第一條,可是能夠經過data獲取餘下的數據;如:
    $User=M('User');
    $User->where('name=「Thinkphp」 AND status=1')->find();
    dump($User->data());
  b.讀取數據集—select
    其實就是讀取知足條件的多行記錄,主要是經過select()來實現;
    若是查詢出錯,返回值爲false;若是查詢值爲空,返回值爲NULL;若是查詢成功,則返回一個二位數組。
  c.讀取字段值-getField
    其實就是讀取全部知足條件的記錄的一個或者幾個字段值;主要是經過getField()來實現;
    默認狀況下,返回的是知足條件的數據的第一行的值,如:$Users->where('id=3')->getField('name')或是$Users->getField('name');
    也能夠獲取整個列的數據:$Users->getField('id',true);
    若是須要獲取兩個列的值:$Users->getField('name,title'):返回一個關聯的一維數組,以第一須要獲取的字段的對應值爲key,
                            第二個須要獲取的字段是的對應值爲value的一維關聯數組。   
    若是須要獲取三個列的值:$Users—>getField('name,title,pid'):返回一個二維數組,格式是array(`nameValue`=>array(`name`=>nameValue,`title`=>titleValue,`pid`=>pidValue));
    還能夠限制獲取記錄的條數:$Users->getField('id,name',3);//獲取查詢到的前3條的記錄安全

4.數據更新(update):數據更新分爲更新數據和更新字段;
  a.更新數據—save
    其實就是更新一整條的記錄,主要使用save()來實現;
    支持數組和對象:使用數組時,save方法須要傳入參數;使用對象時,save方法無需傳入參數;
    若是更新出錯,返回值爲false;若是更新成功,返回值爲受影響的記錄條數;
    爲了數據安全,更新數據時必須包含條件,而且包含主鍵字段,不然不會更新任何數據庫記錄。
  b.更新字段—setField
    其實就是更新一個字段或者幾個字段的值,主要使用setField來實現;
    更新一個字段:$Users->where('id=3')->setField('name','ThinkPHP');
    更新幾個字段:$data=array('name'=>'ThinkPHP','email'=>'ThinkPHP@gmail.com')   $Users->where('id=3')->setField($data);
    對於通緝字段,提供了SetInc方法和SetDec方法,如:
      $Users->where('id=5')->SetInc('score');//score字段增長1
      $Users->where('id=5')->SetInc('score',3);//score字段增長3
      $Users->where('id=5')->SetDec('score');//score字段減小1
      $Users->where('id=5')->SetDec('score',3);//score字段減小3spa

5.刪除數據(Delete):
  其實就是刪除一條或者多條的數據,主要是用delete()來實現;
  爲了數據安全,使用delete必定要設置刪除條件,不然不會刪除任何數據;
  若是刪除出錯,返回值爲false;若是沒有刪除數據,返回值爲0;若是刪除成功,返回值爲刪除掉記錄的條數;
  能夠刪除一條數據,也能夠同時刪除掉多條數據,這主要取決於刪除條件,如:
  $Users->delete(3);//刪除id爲3的記錄
  $Users->delete(1,3,5);//分別刪除id爲1,3,5的記錄。對象

                          
               


補充:
 1.data方法和add方法的異同?
   a.二者的做用都是建立數據對象,可是data使用的場合更爲簡單,而create能夠在建立數據對象的時候實現許多複雜的操做,如field(定義字段的合法性)
     validate(數據自動驗證)、auto(數據的自動完成)和token(令牌驗證)
   b.data支持字符串、數組、對想;create支持數組和對象;
            
 2.add方法和save方法的區別?
   add方法是直接向數據庫中添加數據,save方法則是以主鍵字段做爲判斷條件,向數據庫中更新數據。token

相關文章
相關標籤/搜索