2010-02-02 18 views
5

No parece que haya ninguna sustitución de parámetros en Zend_Db_Select 's cláusula.Zend Db Seleccionar? Sustitución en condición join *

Es muy molesto que no puedo hacer algo como:

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

Entonces, ¿cuál es la alternativa idiomática que funciona dentro de la interfaz fluida? Podría hacer algo como preparar la cláusula join en el exterior, pero ese no es el punto.

Respuesta

9

Esto debería funcionar:

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

Básicamente, cada vez que quieren escapar una variable donde un método Zend_Db_ * no lo hace automáticamente, solo usa Zend_Db :: quoteInto() para hacer el trabajo.

1

Así es como siempre lo hago, no es una obra de arte, pero hace el trabajo:

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