2009-12-04 18 views

Répondre

57

Pour étendre sur la réponse de Jason W:

pas exactement ce que le La 3e section dit

Cela signifie que vous pouvez le faire:

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

Et l'adaptateur va tout citer pour vous.

Je ne pense pas que la documentation soit très claire.

+0

Toujours vérifier l'API - le manuel ne peut tout simplement pas tout couvrir avec suffisamment de détails –

+22

Une API qui vous oblige à l'ingénierie inverse pour faire des choses simples est une API merdique. –

+0

Exactement @AlanStorm, pour vraiment utiliser Zend Framework, vous devez vraiment plonger dans le code source. Fait pour une courbe d'apprentissage raide et frustrante. – David

20

De l'zend manual sur delete():

Si vous omettez le deuxième argument, le résultat est que toutes les lignes sont supprimées de la table de base de données .

Si vous fournissez un tableau de chaînes comme le second argument, ces chaînes sont jointes ensemble dans une expression séparées par des opérateurs.

Si vous fournissez un tableau de tableaux comme le second argument, sera automatiquement Mentionner les valeurs dans les clés. Ceux-ci seront ensuite joints ensemble comme termes, séparés par ET opérateurs.

pas exactement ce que la 3ème section dit, mais le 2 implique que vous pouvez faire:

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

C'est la meilleure façon de le faire! – markus

1

Si vous êtes dans le modèle qui s'étend Zend_Db_Table_Abstract de classe, vous devez utiliser une structure différente:

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