Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-02-2008 07:27:53

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

pb avec select zend_expr et __toString

salut à tous
sur ma plateforme de dev j'ais des objet select que j'utilise comme sous requête je les passe donc en parametres de zend_db_expr qu'eux même j'utilise dans d'autre select.

et ça fonctionne
sur d'autre palteforme ça ne fonctionne pas.
j'ai tanté un print_r("$select") pour faire afficher mon select et sur ma palteforme j'ai bien le code SQL et sur les autres Object ressouce #45 ou quelque chose du genre

c'est comme si les methodes magique __toString ne fonctionnaient pas sur ses machines.

à par les invoquer soit même n'y a-t-il pas une directive ou un truc pour les activer ?

A+JYT

Hors ligne

 

#2 12-02-2008 02:07:47

ceone
Membre
Date d'inscription: 18-12-2007
Messages: 26

Re: pb avec select zend_expr et __toString

Salut sekaijin,

Est ce que toutes tes plateformes tournent en PHP5 ? (J'imagine que oui)
Sinon tu peux tenter de redéfinir la méthode __toString dans ta class expr en utilisant uniquement l'héritage return parent::__toString() à l'intérieur.

Je n'ai vu nulle part dans la doc de php5 qu'il fallait activé quoi que ce soit pour utiliser les méthodes magiques. Etonnant que tu n'es pas d'erreur !

A+

Dernière modification par ceone (12-02-2008 02:10:35)

Hors ligne

 

#3 12-02-2008 07:33:37

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

Re: pb avec select zend_expr et __toString

j'ai enfin trouvé
la methode magique __toString n'est appelé que sur l'emploie de echo et print dans PHP 5.1.6 et antérieur
elle est appelé sur toute conversion de chaine dans php 5.2.0

je n'ai pas à redéfinir la methode mais pour être compatible
il faut absolument faire

Code:

         $leftSubSelect = $this->_db->select()
               ->from('role', array('rol_left'))
               ->where ('rol_id = :_currentRole');

         $rightSubSelect = $this->_db->select()
               ->from('role', array('rol_right'))
               ->where ('rol_id = :_currentRole');

         $select
         ->from('profile', array('id'=>'prf_id'))
         ->join('role', 'profile.rol_id = role.rol_id', array('ident' => 'rol_label'))
         ->join('workgroup', 'profile.wkg_id = workgroup.wkg_id', array('label' => 'wkg_label'))
         ->where('prf_id > 0')
         ->where("usr_id = :_usrId")
         ->where('rol_left >= ('.$leftSubSelect->__toString().')')
         ->where('rol_right <= ('.$rightSubSelect->__toString().')')
         ->order('rol_left')
         ;

là où en php 5.2 on fait

Code:

         $select
         ->from('profile', array('id'=>'prf_id'))
         ->join('role', 'profile.rol_id = role.rol_id', array('ident' => 'rol_label'))
         ->join('workgroup', 'profile.wkg_id = workgroup.wkg_id', array('label' => 'wkg_label'))
         ->where('prf_id > 0')
         ->where("usr_id = :_usrId")
         ->where('rol_left >= ('.$this->_db->select()
               ->from('role', array('rol_left'))
               ->where ('rol_id = :_currentRole').')')
         ->where('rol_right <= ('.$this->_db->select()
               ->from('role', array('rol_right'))
               ->where ('rol_id = :_currentRole').')')
         ->order('rol_left')
         ;

A+JYT

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