Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 05-05-2009 22:54:11

wiwidumi
Membre
Date d'inscription: 14-04-2009
Messages: 19

Récupérer un Row dans un RowSet avec un Id

Salut,
Je souhaiterai savoir s'il y a un moyen de récupérer un Row d'un RowSet juste avec l'id du Row en question ?

J'ai essayé la méthode find() , mais il ne fonction que avec les abstract table, j'ai cette erreur:
Fatal error: Call to undefined method Zend_Db_Table_Rowset::find()

J'ai vu aussi la méthode seek dans la documentation mais la recherche se fait par rapport à l'index du rowset et non avec l'id du row en question.

Ya t'il un moyen de récupérer un row simplement ou devrais je faire un foreach de mon rowset et récupérer mon row avec une condition ?

Merci de votre aide.

Hors ligne

 

#2 06-05-2009 09:13:55

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Récupérer un Row dans un RowSet avec un Id

pourquoi récupérer un rowset pour ensuite chercher un élément dedans ???

le principe du row er rowset c'est justement de retourner une structure adapté au besoin
si ton besoin est de chercher un élément pourquoi utiliser un rowset ??

A+JYT

Hors ligne

 

#3 06-05-2009 14:22:38

wiwidumi
Membre
Date d'inscription: 14-04-2009
Messages: 19

Re: Récupérer un Row dans un RowSet avec un Id

Dans mon cas. C'est en fonction des droits des utilisateurs en fait. Pour prendre un exemple simple.
Une personne possède plusieurs adresses.
Je le fais comme ca:
$p1 = new Personne ();
Puis avec une méthode magique je récupère les adresses de cette personne.
$rowsetAdresses = $p1->getAdresses();

Je veux avoir la possibilité de modifier ces adresses en faisant passer l'id de l'adresse à mon url. Donc de cette facon il me faut récupérer un row dans mon rowset avec l'id. Je ne peux évidemment pas faire un find()->current() de l'id directement dans la table car un utilisateur malveillant pourrait être tenté de passer l'id d'une adresse qui ne l'appartient pas donc de le modifier.

Dernière modification par wiwidumi (06-05-2009 14:34:32)

Hors ligne

 

#4 06-05-2009 15:06:49

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Récupérer un Row dans un RowSet avec un Id

Code:

$array = array_filter($rowset->toArray(), create_function('$row', 'return $row->id == ' . $id . ';'));

retourne tous les rows d'on l'id == $id

Code:

class IdFilter extends FilterIterator
{
    private $userFilter;
   
    public function __construct(Iterator $iterator , $filter )
    {
        parent::__construct($iterator);
        $this->idFilter = $filter;
    }
   
    public function accept()
    {
        $row = $this->getInnerIterator()->current();
        return ($row->id == $this->idFilter) ;
    }
}

$iterator = new IdFilter($rowset->getIterator(),$id);
$row = $iterator->next();

le même avec la SPL

pour généraliser le truc dériver la classe rowset de zf surcharger les méthodes adéquat et l'utiliser comme décrit dans la doc

Code:

class Bugs extends Zend_Db_Table_Abstract
{
    protected $_name = 'bugs';
    protected $_rowsetClass = 'MyBugsRowset';
}

A+JYT

Dernière modification par sekaijin (06-05-2009 15:07:47)

Hors ligne

 

#5 07-05-2009 12:24:24

wiwidumi
Membre
Date d'inscription: 14-04-2009
Messages: 19

Re: Récupérer un Row dans un RowSet avec un Id

Oki, merci bien, j'utilise ta première solution et cela fonctionne très bien.

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