文章出處

一. 連貫入門

查找到 id 為 1,2,3,4 中按照創建時間的倒序的前兩位。

在 Home/controller/UserController.class.php 下插入

      1、連貫操作入門

$user = M('User');
var_dump($user->where('id in (1,2,3,4)')->order('date DESC')->limit(2)->select());

得到的SQL查詢語句為

PS:這里的 where、order 和 limit 方法都是連貫操作方法,所以它們都能返回$user本身,
可以互換位置。而 select 方法不是連貫方法,需要放在最后,用以顯示數據集。

 

    2、數組操作

$user = M('User');
var_dump($user->select( array('where'=>'id in (1,2,3,4)', 'limit'=>'2','order'=>'date DESC')));

或者是

$user = M('User');
var_dump($user->select(array('where'=>array('id'=>array('neq','1')),'order'=>'date DESC','limit'=>'2')));    

 

二. 連貫方法

1.where
where 方法支持字符串條件、數組條件(推薦用法)和多次調用

//字符串方式
$user = M('User');
var_dump($user->where('id=1')->select());

//索引數組方式
$user = M('User');
$map['id'] = 1; 
var_dump($user->where($map)->select());

$user = M('User');
$map['id'] =  array('eq', 1);
var_dump($user->where($map)->where('user="蠟筆小新"')->select());

 

2.order
order 用于對結果集排序。

//倒序
$user = M('User');
$map['id'] =  array('eq', 1);
var_dump($user->order('id desc')->select()); //正序默認或 ASC

//第二排序
var_dump($user->order('id desc,email desc')->select());
PS:先按 id 倒序,再按 email 倒序

這個用法在這個數據庫里是沒有什么意義的,但是如果是在比較成績的時候就可以使用了,比如將id換成語文成績,email換成數學成績,

當語文成績是一樣的時候,那這時候就比較數學成績了,這時候才用到兩個排序的功能。

 

//數組形式防止字段和mysql關鍵字沖突
$user = M('User');
$map['id'] =  array('eq', 1);
var_dump($user->order( array('id'=>'DESC'))->select());

使用數組的形式就是能夠在SQL查詢的時候在user等字段上加上``符號,更安全。

 

3.feild
feild 方法可以返回或操作字段,可以用于查詢和寫入操作。

只顯示id和user兩個字段
$user = M('User');
var_dump($user->field('id, user')->select());

使用SQL函數和別名

$user = M('User');
var_dump($user->field('SUM(id) as nihao, user')->select());

其中 'SUM(id) as nihao 中的nihao為設置的別名,在瀏覽器中顯示為

使用數組參數結合SQL函數

$user = M('User');
var_dump($user->field( array('id','LEFT(user,3)'=>'left_user'))->select());

這時只顯示user中數據的前三個字

并且其中的 left_user 也是設置的別名,在SQL查詢語句中為:

獲取所有字段

$user = M('User');
var_dump($user->field()->select()); 

 

4.limit
limit 方法主要用于指定查詢和操作的數量。

限制結果集數量

$user = M('User');
var_dump($user->limit(2)->select());

分頁查詢

$user = M('User');
var_dump($user->limit(0,2)->select()); 

5.page
page 方法完全用于分頁查詢。

$user = M('User');
var_dump($user->page(1,2)->select()); //第一個1是頁碼數,第二個2是條數

6.table
table 方法用于數據表操作,主要是切換數據表或多表操作。

切換數據表

$user = M('User');
var_dump($user->table('think_info')->select());

獲取簡化表名

$user = M('User');
var_dump($user->table('__USER__')->select()); 

注意的是,因為數據表名為think_user,所以這里是__USER__,即USER兩邊都是兩個下劃線,且必須大寫,這里的USER是數據表的后綴名

 

多表查詢

$user = M('User');
var_dump($user->field('a.id,b.id')->table('__USER__ a,__INFO__ b')->select());

也就是獲得兩個數據表中的id,在瀏覽器中為

在SQL查詢語句中為

多表查詢,使用數組形式避免關鍵字沖突

$user = M('User');
var_dump($user->field('a.id,b.id')->table( array('think_user'=>'a',
'think_info'=>'b'))->select());

這時,即為查詢的數據表加上``符號。

 

alias 用于設置數據表別名

$user = M('User');
var_dump($user->alias('a')->select());

不使用別名的時候:

使用別名的時候

都沒有了``符號,也不知道是用來干嘛的

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()