使用物件提供的方法建構出 SQL 並查詢
Zend_Db_Select
與 Zend_Db_Table_Select
大同小異,只差在一個沒有指定 Table,一個有指定 Table。
所以,基本上 Zend_Db_Table_Select
是不需要使用 from()
的,以下用 Zend_Db_Select
做說明
Initialization
Zend_Db_Select
取得方法
// Database adapter |
Zend_Db_Table_Select
取得方法
// DbTable |
DEBUG 方法
// 顯示產生出來的SQL |
Reset
// 清除特定的部分 |
Basic
FROM statement
from(array|string|\Zend_Db_Expr $name, array|string|\Zend_Db_Expr $cols = '*', string $schema = null)
參數
- $name 資料表名稱,array 是要取別名用的: array(‘別名’ => ‘資料表名’)
- $col 該資料表裡的欄位名稱,欄位名稱也可以是 expression,一樣可以使用
Zend_Db_Expr
,array 範例: array(‘別名’ => ‘欄位名’, ‘欄位名’) - $schema Schema名稱
$select->from( |
COLUMN statement
columns(array| string|\Zend_Db_Expr $cols = '*', string $correlationName = null)
參數
- $cols 欄位名,或array: array(‘別名’ => ‘欄位名或 expression’)
- $correlationName 別名
$select->from('table', `) |
JOIN statement
join(array|string|\Zend_Db_Expr $name, string $cond, array|string $cols = self::SQL_WILDCARD, string $schema = null)
參數
- $name 資料表名稱,用法同 from()
- $cond join的條件式
- $cols 欄位名,用法同 from()
join 預設是 joinInner,其他 join 的格式都一樣:
- joinLeft
- joinRight
- joinFull
joinCross 與 joinNatural 不需要 $cond
$select->from(array('t' => 'table')) |
WHERE Statement
範例
$select->from('products') |
GROUP BY
範例
$select->group(array('a', 'b')); |
HAVING
$select->having('sum > ?', 10); |
ORDER BY
範例
$select->order(array( |
LIMIT
範例
$select->limit(20); |
DISTINCT
$select->distinct(); |
UNION
Executing Select Queries
Zend_Db_Select
$db->query()
會回傳 Statement 物件
$stmt = $db->query($select); |
Zend_Db_Table_Select
$select = $table->select(); |
Executing Custom Queries
Zend_Db_Select
範例
$sql = "SELECT * FROM `table`"; |
Zend_Db_Table_Select
範例
$sql = "SELECT * FROM `table`"; |