2010-02-02 1 views
5

Не похоже, что есть замена параметров в Zend_Db_Select.Zend Db Select? Замена в соединении * условие

Это очень раздражает, что я не могу просто сделать что-то вроде:

$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 
);