2010-02-02 88 views
5

它看起來不像Zend_Db_Select的條款中有任何參數替換。Zend Db選擇?替換加入*條件

這是非常惱人的,我不能只是這樣做:

$select->joinLeft('st_line_item','st_line_item.order_id = st_order.id and st_line_item.status = ?') 

那麼什麼是流暢的界面內的作品慣用的選擇嗎?我可以做一些事情,比如在外面準備加入條款,但那不是重點。

回答

9

這應該工作:

$select->joinLeft(
    'st_line_item', 
    $this->_db->quoteInto(
     'st_line_item.order_id = st_order.id and st_line_item.status = ?', 
     $param 
    ) 
) 

基本上,任何時候你想逃避一個Zend_Db_ *方法不會自動執行的變量,您只需使用Zend_Db :: quoteInto()來完成這項工作。

1

這是我怎麼總是做它,它不是一件藝術品,但它能夠完成任務:

$param = $db->quote($param); 
$select->joinLeft(
    'st_line_item', 
    'st_line_item.order_id = st_order.id and st_line_item.status = ' . $param 
);