ThinkPHP的CURD方法及查詢方法一覽

所謂CURD。即對數據庫操做的四個基本操做(CURD):C:create(建立)、U:update(更新)、R:read(讀取)和D:detele(刪除)。
在ThinkPHP中,並非必定以這幾個名字的方法,這裏列出常見的:select,find,findAll,save,create等方法:
php

D讀取:
select->()查詢數據集,和findAll->()相同。例如:
$User->where(‘status=1′)->order(‘create_time’)->limit(10)->select();
注意:在連貫操做中除了select方法必須放到最後一個外,其餘的連貫操做的方法調用順序沒有前後,例如,下面的代碼和上面的等效:
$User->order(‘create_time’)->where(‘status=1′)->limit(10)->select();
thinkphp

find->()方法,和以上兩種方法相似。區別在只返回一條數據。能夠和getField->()獲取一條記錄的某個字段值一塊兒用。數據庫

select和findall效果同樣,返回的是一個二維數組。如數組

array(1) {函數

[0] => array(8)測試

{ ["rank_id"] => string(3) 「151″ui

["rank_name"] => string(7) 「測試9″spa

["rank_memo"] => string(3) 「123″對象

["uid"] => string(5) 「59471″blog

["rank_kw"] => string(6) 「重要」

["rank_uptime"] => string(10) 「1280202914″

["isverify"] => string(1) 「0″

["ishot"] => string(1) 「0″

}

}

find的效果以下,返回的是一個一維數組:

array(8) {

["rank_id"] => string(3) 「151″

["rank_name"] => string(7) 「測試9″

["rank_memo"] => string(3) 「123″

["uid"] => string(5) 「59471″

["rank_kw"] => string(6) 「重要」

["rank_uptime"] => string(10) 「

1280202914″ ["isverify"] => string(1) 「0″

["ishot"] => string(1) 「0″

}

Where方法:用於查詢或者更新條件的定義

Table方法:定義要操做的數據表名稱
$Model->Table(‘think_user user’)->where(‘status>1′)->select();

field方法:定義要查詢的字段
field方法的參數支持字符串和數組,例如,
$Model->field(‘id,nickname as name’)->select();
$Model->field(array(‘id’,’nickname’=>’name’))->select();
若是不使用field方法指定字段的話,默認和使用field(‘*’)等效。

U更新,C建立:

data,add,save方法:數據對象賦值,添加,保存。例如:
$data['name'] = ‘ThinkPHP’;
$data['email'] = ‘ThinkPHP@gmail.com’;
$Model->data($data)->add();//新增,至關於insert,連貫寫法
$Model->add($data); //新增,至關於insert,非連貫寫法
$Model->data($data)->where(‘id=3′)->save(); //修改,至關於update

須要注意的是,save方法的話,若是數據沒有變化,那麼默認返回的操做是FALSE。可是這個save執行是OK的,這個須要注意。

create->()自動從POST的字段組成形如$data的數據

$User=D(「User」);
$User->create(); //默認經過表單提交的數據進行建立
$User->add(); //新增

setInc和setDec方法。對於統計字段(一般指的是數字類型)的更新:
$Model->setInc(‘score’,’id=5′,3); // 用戶的積分加3
$Model->setInc(‘score’,’id=5′); // 用戶的積分加1
$Model->setDec(‘score’,’id=5′,5); // 用戶的積分減5
$Model->setDec(‘score’,’id=5′); // 用戶的積分減1

D刪除:

delete->()刪除數據
$User->where(‘status=0′)->order(‘create_time’)->limit(’5′)->delete();

Model的其餘常見方法:

order方法:結果排序 例如:
order(‘id desc’)
排序方法支持對多個字段的排序
order(‘status desc,id asc’)
order方法的參數支持字符串和數組,數組的用法以下:
order(array(‘status’=>’desc’,’id’))

limit方法:結果限制
limit(’1,10′)
若是使用limit(’10′) 等效於 limit(’0,10′)

page方法:查詢分頁,Page方法的用法和limit方法相似,格式爲:
Page(‘page[,listRows]‘)
Page表示當前的頁數,listRows表示每頁顯示的記錄數。例如表示每頁顯示10條記錄的狀況下面,獲取第2頁的數據:
Page(’2,10′)
listRow若是不寫的話,會讀取limit(‘length’) 的值,例如表示每頁顯示25條記錄的狀況下面,獲取第3頁的數據:
limit(25)->page(3);
若是limit也沒有設置的話,則默認爲每頁顯示20條記錄。

Join方法:查詢Join支持.Join方法的參數支持字符串和數組,而且join方法是連貫操做中惟一能夠屢次調用的方法。例如:
$Model->join(‘ work ON artist.id = work.artist_id’)->join(‘card ON artist.card_id = card.id’)->select();
默認採用LEFT JOIN 方式,若是須要用其餘的JOIN方式,能夠改爲
$Model->join(‘RIGHT JOIN work ON artist.id = work.artist_id’)->select();

Distinct方法:查詢的Disiinct支持。查詢數據的時候進行惟一過濾
$Model->Distinct(true)->select();

Relation方法:關聯查詢支持
$Model->Relation(true)->select();

條件查詢

$map->put(‘name’,'php’); //name=’php’

(‘name’,array(‘like’,'think’)); //name like ‘…’

(‘id’,array(‘in’,array(1,2,4)));

(‘id’,array(’10′,’3′,’or’)); //id>=10 or <=3

thinkphp多表查詢語句

一、table()函數
thinkphp中提供了一個table()函數,具體用法參考如下語句:
$list=$Demo->table(‘think_blog blog,think_type type’)->where(‘blog.typeid=type.id’)->field(‘blog.id as id,blog.title,blog.content,type.typename as type’)->order(‘blog.id desc’ )->limit(5)->select();
echo $Demo->getLastSql(); //打印一下SQL語句,查看一下

二、join()函數 看一下代碼: $Demo = M(‘artist’); $Demo->join(‘RIGHT JOIN think_work ON think_artist.id = think_work.artist_id’ ); //可使用INNER JOIN 或者 LEFT JOIN 這裏必定要注意表名的前綴! echo $Demo->getLastSql(); //打印一下SQL語句,查看一下

相關文章
相關標籤/搜索