Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 27-11-2007 09:23:58

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

[BUG] Zend_Db_Select

Bonjour à tous et encore une fois le même sujet

à croire que j'aime bien cette classe.
voici donc le problème cette fois-ci
le problème vient de l'utilisation de sous requête dans la source d'une jointure

Code:

SELECT t1_label, t2_label
FROM table1
INNER JOIN (SELECT t2_label FROM table2 WHERE condition) AS T2 ON (table1.t2_id = T2.t2_id)

pour faire cela avec Zend_Db_Select il faut écrire ceci

Code:

$db->select()
->from ('table1', array('t1_label')
->joinInner(
      array('T2' => new Zend_Db_Expr (
         '('.
         $db->select()
         ->from('table2', array('t2_label'))
         ->where('condition')
         .')'
      )),
      'table1.t2_id = T2.t2_id',
      array('t2_label')
)

il est possible de de trouver d'autres syntaxes mais en gros voilà le principe.
mais le code généré pour la sous requête va être

Code:

SELECT
`table2`.`t2_label`
FROM `table2`
WHERE condition

l'expression est donc

Code:

(SELECT
`table2`.`t2_label`
FROM `table2`
WHERE condition)

mais Zend_Db_Select va chercher dans cette chaine le motif shemas.tablename
il va donc couper la chaine en deux et la quoter ainsi

Code:

`(SELECT
``table2```.```t2_label``
FROM ``table2``
WHERE condition)`

le bug se trouve donc ligne 360

Code:

        if (false !== strpos($tableName, '.')) {
            list($schema, $tableName) = explode('.', $tableName);
        }

il faut tenir compte du fait que la source de la jointure puisse être une expression

Code:

        if (!$tableName instanceof Zend_Db_Expr && false !== strpos($tableName, '.')) {
            list($schema, $tableName) = explode('.', $tableName);
        }

ce bug se produit dès que la source est une formule contenant un .
A+JYT

Hors ligne

 

#2 27-11-2007 21:26:47

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: [BUG] Zend_Db_Select

Merci sekaijin pour le report de ce bug.
Je tiens à t'informer qu'un bug du style a déja été reporté(ZF-1856), les corrections sont donc en cours ;-)

Hors ligne

 

#3 27-11-2007 22:03:38

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

Re: [BUG] Zend_Db_Select

merci de l'info
il me faudrait un peu de temps pour lire tous les bug ouvert
j'ai préféré signaler immédiatement.
A+JYT

Hors ligne

 

#4 29-11-2007 19:24:54

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: [BUG] Zend_Db_Select

Mais notre communauté sert aussi à ca.
J'ai un accès CLA au projet, je peux donc remonter, ou corriger, les bugs trouvés par les francophones ;-)
Aucun souci

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