thinkPHP常用數據操作(三)連貫操作

簡單應用舉例

$User->where('status=1')->order('create_time')->limit(10)->select();

$User->order('create_time')->limit(10)->where('status=1')->select();

$User->where('id=1')->field('id,name,email')->find();
$User->where('status=1 and id=1')->delete();

//連貫操作的方法調用順序沒有先後,但是要確保select,find,delete放在最後。

//連貫操作僅在當次查詢或者操作有效,完成後會自動清空連貫操作的所有傳值

//簡而言之,連貫操作的結果不會帶入以後的查詢

//支持的列表,略

用法示例

1 table 

//注:需要數據表的全名

$Model->Table('think_user user')->where('status>1')->select();

$Model->Table('db_name.think_user user')->where('status>1')->select();

$Model->Table(array('think_user'=>'user','think_group'=>'group'))->where('status>1')->select();

2 data 

//可以用於新增或者保存數據之前的數據對象賦值

(1)$Model->data($data)->add(); 新增
(2)$Model->data($data)->where('id=3')->save(); 更新

//備註:如果不調用data方法,則會取當前的數據對象或者傳入add和save的數據。

//也可以不調用data方法直接使用Model->add和model->save,但是這種情況下,參數只能使用數組

3 field

// 用於定義要查詢的字段 field($field,$except=false)

$Model->field('id,nickname as name')->select();
$Model->field(array('id','nickname'=>'name'))->select();


field('')和field('*')等效,表示默認選擇所有字段

field(true)則表示顯式選擇所有字段//此爲tp推薦的方式

4 order

order('id desc')

order('status desc,id asc')

order(array('status'=>'desc','id'))//id不指示順序,表示按照數據庫默認規則

5 limit

//方式limit('offset,length')

limit('1,10')等效於limit(1,10) //offset=1, ;length=10

limit('10')等效於limit('0,10')//前10個

6 page

//方式 Page('page[,listRows]')  page表示當前的頁數,listRows表示每頁顯示的記錄數

Page('2,10') 表示每頁顯示10條記錄的情況下面,獲取第2頁的數據.也可寫成Page(2,10)

listRow如果不寫的話,會讀取limit('length') 的值,例如:
limit(25)->page(3); 表示每頁顯示25條記錄的情況下面,獲取第3頁的數據

//如果limit也沒有設置的話,則默認爲每頁顯示20條記錄。

7 group

group('user_id')

8 having

 having('user_id>0')

9 join 

$Model->join(' work ON artist.id = work.artist_id')->join('card ON artist.card_id = card.id')->select();//默認inner join

$Model->join('RIGHT JOIN work ON artist.id = work.artist_id')->select();//指定join的類型right join

10 union

//union($union,$all=false) $all=true.表示使用union all操作

$Model->field('name')
->table('think_user_0')
->union('SELECT name FROM think_user_1')
->union('SELECT name FROM think_user_2')
->select();

數組用法

$Model->field('name')
->table('think_user_0')
->union(array('field'=>'name','table'=>'think_user_1'))
->union(array('field'=>'name','table'=>'think_user_2'))
->select();

11 distinct

$Model->Distinct(true)->field('name')->select();

12 lock

//lock($lock) 參數必須。用於查詢或寫入時的鎖定

lock(true)

13 validate

待補充

14 auto

待補充

15 scope

參考官方手冊

16 filter

//filter($filter) ,參數必須。用於數據的安全過濾

$Model->data($data)->filter('strip_tags')->add();

//filter方法一般用於寫入和更新操作,用於對數據對象的安全過濾

$Model->data($data)->filter('strip_tags')->add();//暫時不支持多個方法的過濾


以上內容大部分摘自thinkphp3.2.3快速入門,詳情請參考官方文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章