事實上,一旦你開始瞭解Zend_db的工作方式,這真的很容易。
查詢:
$select = $this->select()
->from('offer_term')
->setIntegrityCheck(false)
->joinUsing('term_mapping', 'term_id')
->where('promo_id = ?', $promo_id);
return $this->fetchAll($select);
你已經在使用
select()
對象進行查詢,所以儘量以重構像這樣
(我會包括如何與條件以及這樣做):
$select = $this->select()->setIntegrityCheck(false);
$select->from('offer_term');//if query is inside of a DbTable model the from() can be omitted
$select->joinUsing('term_mapping', 'term_id');
$select->where('promo_id = ?', $promo_id);//Every time you add a where(), select() adds the param using the AND operator
$select->where('something_new = ?', $new_param);//if you need to add a param using OR you can use the orWhere() method.
if (TRUE) {
$select->orWhere('something = ?',$parameter);//This will add an OR WHERE to the query if the condition is true.
}
return $this->fetchAll($select);
在select()
查詢添加一個和是通過增加另一個where()
到鏈剛做過。這可以通過鏈接來完成,就像我原來的查詢一樣,或者通過使用單獨的語句來完成。如果您需要在select()
查詢中使用或運算符,則可以使用orWhere()
方法。
您可以根據需要混用鏈接和單獨的語句,這使得添加條件非常簡單。
注意: Zend_Db不是ORM,它是表網關和錶行模式的實現(我希望我的名字正確)。所以請不要期望完整的ORM功能。
希望這會有所幫助。
如果if-else子句發生,不要假設它們是追加查詢的方法。說這是通過函數實例化的,在某些情況下會導致這是舊的代碼,現在很難跟蹤所有的東西,所以使用該函數我想執行'$ extra = null',所以默認情況下它會工作就像現在一樣,但是如果我通過'$ extra',我想追加附加子句到查詢中,那麼正確的方法是什麼? – chris