2010-02-02 12 views
5

Wygląda na to, że w klauzuli Zend_Db_Select nie ma podstawień parametrów.Zend Db Wybierz? Zastąpienie w połączeniu * warunek

To bardzo irytujące, że nie można po prostu zrobić coś takiego:

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

Więc co jest idiomatyczne alternatywa, która działa w ramach płynny interfejs? Mógłbym zrobić coś w rodzaju przygotowania klauzuli join na zewnątrz, ale nie o to chodzi.

Odpowiedz

9

to powinno działać:

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

Zasadniczo, kiedy tylko chcesz uciec zmienna, w której metoda Zend_Db_ * nie robi tego automatycznie, po prostu użyj Zend_Db :: quoteInto(), aby wykonać zadanie.

1

ten sposób zawsze robię to, że nie jest to dzieło sztuki, ale dostaje zadanie:

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