2009-12-04 17 views

Respuesta

57

Extender sobre la respuesta de Jason W:

No exactamente seguro de lo que el tercera sección está diciendo

Eso significa que usted puede hacer esto:

$db->delete('tablename', array(
    'first_id = ?' => $first_id, 
    'second_id = ?' => $second_id 
)); 

Y el adaptador lo citará todo por usted.

No creo que la documentación sea muy clara.

+0

Siempre revise la API: el manual simplemente no puede cubrir todo con suficiente detalle –

+22

Una API que le obliga a realizar una ingeniería inversa para hacer cosas simples es una API desastrosa. –

+0

Exactamente @AlanStorm, para usar realmente Zend Framework, realmente tiene que sumergirse en el código fuente. Hace una curva de aprendizaje empinada y frustrante. – David

20

Desde el zend manual en delete():

Si se omite el segundo argumento, el resultado es que todas las filas de la tabla base de datos se borran.

Si proporciona una matriz de cadenas como el segundo argumento, estas cadenas son unidos entre sí como términos en una expresión separados por operadores AND.

Si proporciona una matriz de matrices como el segundo argumento, los valores de los será citado automáticamente en las teclas . A continuación, se unirán como términos, separados por operadores AND .

No exactamente seguro de lo que la tercera sección está diciendo, pero el segundo implica que usted puede hacer:

$where = array(); 
$where[] = $db->quoteInto('first_id = ?', $first_id); 
$where[] = $db->quoteInto('second_id = ?', $second_id); 
$db->delete('tablename', $where); 
+0

Esa es la mejor manera de hacerlo! – markus

1

Si estás en el modelo que se extiende Zend_Db_Table_Abstract clase, es necesario utilizar estructura diferente:

class Yourmodel extends Zend_Db_Table_Abstract { 
    protected $_name = 'tablename'; 
    protected $_primary = 'primarykey'; 
    public function remove($first_id, $second_id) { 
     $where = array(); 
     $where[] = $this->getAdapter()->quoteInto('first_id = ?', $first_id); 
     $where[] = $this->getAdapter()->quoteInto('second_id = ?', $second_id); 
     $this->delete($where); 
    } 
} 
Cuestiones relacionadas