1. 程式人生 > >ThinkPHP中資料庫操作返回值總結

ThinkPHP中資料庫操作返回值總結

文章轉自:http://www.baiwar.com/post/thinkphp-database-operations-in-the-return-value.html

Thinkphp中的Think\Model類提供了資料庫的基本CURD(Create、Update、Read及Delete),通過該類可以很便捷的進行操作。
Model類及擴充套件類主要的方法有:

  1. Create操作:
    create()(非鏈式) 、add()、addAll()
    支援的鏈式操作有:
    table 、data、field 、relation 、validate、auto 、filter、scope 、bind 、token 、comment
  2. Update操作
    save()、setField()、setInc()、setDec()
    支援的鏈式操作有:
    where、table 、alias、field、order、lock 、relation 、scope 、bind 、comment
  3. Read操作
    find()、select()、getField()、Count 、Max、Min 、Avg 、Sum
    支援的鏈式操作有:
    where 、table 、alias 、field 、order、group 、having 、join 、union 、distinct、lock、cache 、relation 、result 、scope 、bind 、comment
  4. Delete操作
    delete()
    支援的鏈式操作有:
    where 、table 、alias 、order、lock 、relation 、scope 、bind 、comment

這些方法的可能的返回值有false/true/一位陣列/二維陣列/numeric(數字)/null/類本身的例項,現在就總結如下:

1、鏈式操作:

所以鏈式操作都返回Model類的例項,即可以使用該返回值繼續呼叫例項方法。

  1. $User=M("User");
  2. $U1=$User->$where("id = 1");//$U1可以繼續呼叫其他方法。
  3. $result=$U1->select();
  4. //-------一般情況下沒有必要這樣,下面一句程式碼即可實現
  5. $result=M("User")->$where("id = 1")->select();

2、Create操作

  1. create 返回值:
    1. 若發生錯誤,返回false;
    2. 成功則返回建立的資料
      create為非鏈式操作,返回值為可能為布林值,所以操作時要進行嚴格判斷:
      1. $User = M("User");
      2. if($User->create()){
      3. //進行更多操作
      4. }
  2. add 返回值,addAll 返回值
    1. 成功:如果主鍵是自動增長型,返回值為新增記錄Id值(addAll為最大值),否則返回true;
    2. 發生錯誤返回 false;

3、update操作

  • save 返回值(setField、setInc、setDec最後呼叫的都是save方法,所以返回值與save一致):
    save 返回值是影響的記錄數(有可能為0),更新出錯返回false,因此一定要用恆等來判斷是否更新失敗。

4、read操作

  1. find 返回值
    如果查詢出錯,find的返回值為false
    如果查詢結果為空返回NULL,查詢成功則返回一個關聯陣列(鍵值是欄位名或者別名)。
  2. select 返回值
    如果查詢出錯,select的返回值是false,
    如果查詢結果為空,則返回NULL,否則返回二維陣列。
  3. getField 返回值
    1. 如果查詢出錯,getField的返回值為false
    2. 查詢成功:
      1. getField($field):$field為一個欄位,返回資料庫中該欄位的第一行的值
      2. getField($field,true):$field為一個欄位,返回包含該欄位的一維陣列
      3. getField($fields):$fields為兩個欄位(以“,”隔開),返回array($field1=>$field2)的陣列;若$field為多個欄位,返回類似select的多維陣列,鍵名為field1。
      4. getField($fields,”:”):$field為多個欄位,返回類似array($field1=>”$field2:$field3”)的陣列
  4. Count 、Max、Min 、Avg 、Sum返回值
    如果查詢出錯,返回值為false
    查詢成功,則返回對應的值

5、Delete操作

  • delete 返回值:成功則返回true,查詢錯誤則返回false