2010-02-02 85 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 
);