Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 05-01-2012 14:50:58

schwarzy2
Nouveau membre
Lieu: proche de Paris
Date d'inscription: 05-01-2012
Messages: 8
Site web

[Résolu][ZF 1.11][Zend_Db] fetchALL ne fonctionne pas avec un array

Bonjour à tous,

je ne comprends pas pourquoi mon fetchALL ne fonctionne pas avec un array. Lorsque je remplace par une chaîne de caractères, tout va bien, mais si je veux utiliser les array, rien ne va plus, mon where est tout simplement inexistant. Mon objet($this->mymodel) est une instance de la classe Zend_Db_Table_Abstract.

Mon code est le suivant:

Code:

$filtres=$formulaire[0];
print_r($filtres); //donne Array ( [taches_id] => 42 )        
$ar_values = $this->mymodel->fetchAll('taches_id=42','ordre')->toArray(); //fonctionne
$ar_values =$this->mymodel->fetchAll($filtres,'ordre')->toArray(); //ne fonctionne pas

évidemment je peux transformer mon array en chaine de caractères, mais la solution de l'array était beaucoup plus pratique, et elle devrait fonctionner normalement...je ne comprends pas.

si quelqu'un avait une explication? une piste?

merci d'avance

Dernière modification par schwarzy2 (05-01-2012 18:01:10)


Feel good, feel geek

Hors ligne

 

#2 05-01-2012 15:29:56

My_Sic
Membre
Date d'inscription: 06-09-2010
Messages: 49
Site web

Re: [Résolu][ZF 1.11][Zend_Db] fetchALL ne fonctionne pas avec un array

Le tableau doit être de la forme suivante pour marcher :

Code:

   array('taches_id=?' => '42')

http://www.centurion-project.org: Full stack Framework based on Zend Framework; led by:
http://www.octaveoctave.com: an enthusiastic web agency full of passionate.
http://www.cache-pistache.com: French blog on ZF and SF perfomance

Hors ligne

 

#3 05-01-2012 15:30:15

lebilien
Membre
Lieu: avranches
Date d'inscription: 19-06-2007
Messages: 270
Site web

Re: [Résolu][ZF 1.11][Zend_Db] fetchALL ne fonctionne pas avec un array

Sauf erreur de ma part :

'taches_id=42' ne correspond pas a un tableau , voila pourquoi cela fonctionne

il y a une difference entre 'taches_id=42'et  [taches_id] => 42  quand tu  utilise $filtres tu écrit :

Code:

$ar_values =$this->mymodel->fetchAll( [taches_id] => 42 ,'ordre')->toArray();

il y a une différence avec la première ligne . Essai  en bouclant sur key=>value pour ton tableau tu voit ?

cdt


http://www.parkaddict.com Gagner des places dans vos parcs préférés

Hors ligne

 

#4 05-01-2012 17:49:55

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: [Résolu][ZF 1.11][Zend_Db] fetchALL ne fonctionne pas avec un array

Plop je pense que la solution De My_Sic devrait fonctionner. Voici comment est utilisé le where à travers un fetchAll() :

Code:

[lang=php]protected function _where(Zend_Db_Table_Select $select, $where)
    {
        $where = (array) $where;

        foreach ($where as $key => $val) {
            // is $key an int?
            if (is_int($key)) {
                // $val is the full condition
                $select->where($val);
            } else {
                // $key is the condition with placeholder,
                // and $val is quoted into the condition
                $select->where($key, $val);
            }
        }

        return $select;
    }

On voit bien que dans le cas où c'est un array indexé il récupère la clé et la valeur. Au niveau de la syntaxe que ça donne voici ce qu'on trouve sur la doc officielle :

Code:

[lang=php]$table->select()
        ->where('bug_status = ?', 'NEW')

où 'bug_status joue le rôle de la variable $key et 'NEW' la variable $val.

La syntaxe dans ton array doit donc être la suivante :

Code:

[lang=php]array('bug_status = ?' => 'NEW')

Dernière modification par Orkin (05-01-2012 17:52:50)

Hors ligne

 

#5 05-01-2012 17:59:05

schwarzy2
Nouveau membre
Lieu: proche de Paris
Date d'inscription: 05-01-2012
Messages: 8
Site web

Re: [Résolu][ZF 1.11][Zend_Db] fetchALL ne fonctionne pas avec un array

Merci My_Sic! c'est exactement ce que je cherchais, effectivement il faut ajouter le =?, c'est dommage, ça empêche d'utiliser les tableaux directement, il faut les travailler avant.
Mais bon, j'ai compris ce qui clochait. Merci encore!

Merci aussi lebilien, mais en fait MySic m'a donné exactement ce que je cherchais.

/ajout merci Orkin, je n'ai vu ton message qu'après, effectivement, la solution de MySic marche parfaitement, comme tu le disais.

Dernière modification par schwarzy2 (05-01-2012 18:00:52)


Feel good, feel geek

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