2009-12-04 7 views

risposta

57

Per estendere alla risposta di Jason W:

Non esattamente sicuro di quello che la 3a sezione sta dicendo

ciò significa che si può fare questo:

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

E l'adattatore citerà tutto per te.

Non mi sembra che la documentazione sia molto chiara.

+0

Controlla sempre l'API - il manuale non può semplicemente coprire tutto con dettagli sufficienti –

+22

Un'API che ti costringe a decodificarlo per fare cose semplici è un'API schifosa. –

+0

Esattamente @AlanStorm, per usare davvero Zend Framework, devi davvero tuffarti nel codice sorgente. Rende una curva di apprendimento ripida e frustrante. – David

20

Dal zend manual su delete():

Se si omette il secondo argomento, il risultato è che tutte le righe della tabella di database vengono eliminati.

Se si fornisce un array di stringhe come secondo argomento, queste stringhe sono uniti insieme come termini in una espressione separati da operatori AND.

Se si fornisce un array di array come il secondo argomento, i valori saranno quotati automaticamente le chiavi . Questi saranno quindi uniti insieme come termini, separati dagli operatori AND .

Non esattamente sicuro di quello che la terza sezione è dicendo, ma la seconda implica che si può fare:

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

Questo è il modo migliore per farlo! – markus

1

Se siete nel modello che si sta estendendo classe Zend_Db_Table_Abstract, è necessario utilizzare struttura diversa:

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); 
    } 
} 
Problemi correlati