Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour, dans une classe qui étend Zend_Dd_Table_abstract,
je souhaite supprimer des enregistrements avec une clause where.
J'utilise la méthode
$this->delete($where)
Cependant ma clause where fait planter la requête.
J'ai bien regardé la documentation en ligne ils disent que la méthode delete() accepte 2 paramètre:
-le premier est le nom de la table
-le second étant la clause SQL
Malgré plusieurs tentatives, je n'y parviens pas.
Merci pour votre aide.
Hors ligne
comme tu dis, il y a deux arguments et la clause where est le second. dans ton exemple de code, tu met juste where qui passe comme premier argument et donc il prend la place du nom de la table. C'est donc normal que tu ai une erreur.
Hors ligne
voici ma classe avec la fonction supprime ou je respecte la syntaxe enfin je pense)
class Default_Model_DbTable_Dossier extends Zend_Db_Table_Abstract { protected $_name = 'DOSSIER'; protected $_primary = 'Dossier_Id'; protected $_dependentTables = array('DEMANDE'); public function supprimeDossier($id) { $this->delete('DOSSIER','Dossier_Id='.$id); } }
et voilà le message d'erreur
Message: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'DOSSIER' in 'where clause'
Hors ligne
Tu confond la méthode delete de Zend_Db_Adapter_Abstract
/** * Deletes table rows based on a WHERE clause. * * @param mixed $table The table to update. * @param mixed $where DELETE WHERE clause(s). * @return int The number of affected rows. */ public function delete($table, $where = '')
et celle de Zend_Db_Table Abstract
/** * Deletes existing rows. * * @param array|string $where SQL WHERE clause(s). * @return int The number of rows deleted. */ public function delete($where)
Dans la première deux paramètre la table et la clause
Dans la seconde un paramètre la clause
A+JYT
Hors ligne
absolument....Merci pour l'éclairage !
Hors ligne