2009-12-04 6 views

Antwort

57

auf Jason W Antwort zu erweitern:

Nicht ganz sicher, was die Abschnitt 3. sagt

das heißt, Sie können dies tun:

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

Und der Adapter wird alles für Sie anführen.

Ich habe nicht das Gefühl, die Dokumentation ist jedoch sehr klar.

+0

Überprüfen Sie immer die API - das Handbuch kann einfach nicht alles ausführlich genug abdecken –

+22

Eine API, die Sie zwingt, Reverse-Engineering, um einfache Dinge zu tun, ist eine beschissene API. –

+0

Genau @AlanStorm, um wirklich das Zend Framework zu benutzen, musst du wirklich in den Quellcode eintauchen. Sorgt für eine steile und frustrierende Lernkurve. – David

20

Vom zend manual auf delete():

Wenn Sie das zweite Argument weglassen, das Ergebnis ist, dass alle Zeilen in der Datenbanktabelle gelöscht werden.

Wenn Sie ein Array von Strings als das zweite Argument liefern, diese Strings sind miteinander verbunden sind als Begriffe in einem Ausdruck getrennt von AND Operatoren.

Wenn Sie ein Array von Arrays als das zweite Argument liefern, die die Werte werden automatisch in die Schlüssel angegeben werden. Diese werden dann zusammen als zusammengefügt, getrennt durch AND Betreiber.

nicht genau sicher, was der dritte Abschnitt sagt, aber der zweite bedeutet, dass Sie tun können:

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

Das ist der bessere Weg, es zu tun! – markus

1

Wenn Sie in Modell sind die Klasse Zend_Db_Table_Abstract erweitert, müssen Sie andere Struktur verwenden:

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