Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Quel est la différence entre ces deux lignes de codes qui à mon avis arrivent au même résultat ?
return $this->getAdapter()->quoteInto('id = ?', $id);
return $this->table->find($id)->current;
Merci de vos précisions
Cordialement.
PS: j'ai fais la modification pour la méthode find(). Ce copier/coller nous jouera toujours des tours
Dernière modification par nicko (15-09-2009 08:29:01)
Hors ligne
Salut,
Dans le find tu n'as pas besoin de préciser ton where. Il cherche forcément par clé primaire. Sinon, la différence c'est que la méthode find gère directement les clés primaires composées et te protège contre les injections automatiquement. Elle permet aussi de récupérer un ou plusieurs enregistrements (rowset).
// clé primaire unique $id = 1; return $this->table->find($id)->current(); // plusieurs enregistrements $ids = array(1,2); return $this->table->find($ids); // clé primaire composée $idCol1 = 1; $idCol2 = 'toto'; return $this->table->find($idCol1, $idCol2)->current(); // plusieurs enregistrements $idsCol1 = array(1,2); $idsCol2 = array('toto', 'titi'); return $this->table->find($idsCol1, $idsCol2);
A+ benjamin.
Dernière modification par Delprog (13-09-2009 02:17:20)
Hors ligne
t'es sur parce que current retourne 1 seule ligne de tableau
je dirais plutot
$ids = array(1,2);
return $this->table->find($ids);
Hors ligne
Oui c'est une erreur de copier/coller
Je corrige.
Hors ligne
Je rajoute que les codes n'ont rien à voir, puisque cette ligne
return $this->getAdapter()->quoteInto('id = ?', $id); // 'id = 765'
Ne fait que "nettoyer" et préparer ton where, qu'il faudra réinjecter dans une clause. Et les clauses peuvent directement être envoyé au format tableau.
http://framework.zend.com/manual/fr/zen … quote-into
Cette ligne est incorrecte.
return $this->table->find('id = ?', $id)->current;
Puisque comme cela a été dit, find attend directement un tableau de clé primaire.
http://framework.zend.com/manual/fr/zen … table.find
Si tu veux utiliser des clauses préparés, il te faut un code du style
$this->table->fetchAll(array('field = ?' => $value));
Comme dit plus haut, la préparation a plusieurs avantages (sécurité, rapidité) quand elle est bien géré (c'est natif avec pdo il me semble)
Hors ligne
Ok merci pour les infos et désolé pour le copier/coller dans le premier post.
Hors ligne