Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 12-09-2009 19:55:51

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

[Résolu]Quel est la différence ...

Bonjour,

Quel est la différence entre ces deux lignes de codes qui à mon avis arrivent au même résultat ?

Code:

return $this->getAdapter()->quoteInto('id = ?', $id);

Code:

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 wink

Dernière modification par nicko (15-09-2009 08:29:01)

Hors ligne

 

#2 13-09-2009 02:01:46

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Résolu]Quel est la différence ...

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).

Code:

// 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)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#3 13-09-2009 02:05:46

stealth35
Membre
Date d'inscription: 30-08-2009
Messages: 29

Re: [Résolu]Quel est la différence ...

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

 

#4 13-09-2009 02:16:54

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Résolu]Quel est la différence ...

Oui c'est une erreur de copier/coller smile

Je corrige.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#5 14-09-2009 13:18:46

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu]Quel est la différence ...

Je rajoute que les codes n'ont rien à voir, puisque cette ligne

Code:

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.

Code:

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

Code:

$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

 

#6 15-09-2009 08:28:45

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: [Résolu]Quel est la différence ...

Ok merci pour les infos et désolé pour le copier/coller dans le premier post.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages