Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 06-04-2008 12:50:15

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

[PROPOSAL]Prefixer les clef primaire dans find de Zend_Db_Table

Bonjour,

Je propose que Zend_Db_Table_Abstact préfixe par le nom de la table (comme il convient de le faire)
les clefs primaires dans la méthode find
il faut remplacer

Code:

$whereAndTerms[] = $this->_db->quoteInto(
   $this->_db->quoteIdentifier($keyNames[$keyPosition], true) . ' = ?',
   $keyValue, $type);

par

Code:

$whereAndTerms[] = $this->_db->quoteInto(
   $this->_db->quoteIdentifier($this->_name).'.'.
   $this->_db->quoteIdentifier($keyNames[$keyPosition], true) . ' = ?',
   $keyValue, $type);

sur la 1.0.3 ligne 960
sur la 1.5.0 ligne 976

Code:

SELECT ...
FROM 'table'
WHERE 'tbl_id' = value;

devient

Code:

SELECT ...
FROM 'table'
WHERE 'table'.'tbl_id' = value;

cela ne  change rien en temps normal. mais lorsqu'on surcharge la classe pour joindre la table avec elle-même
(par exemple dans les hiérarchies) cela lève l'ambigüité sur les clefs primaires.
exp

Code:

SELECT ...
FROM 'table'
INNER JOIN 'table' AS 'parent' ON ('table'.'parent_id' = 'parent'.'tbl_id')
WHERE 'tbl_id' = value;

SQL ERROR  : ambigous tbl_id

Code:

SELECT ...
FROM 'table'
INNER JOIN 'table' AS 'parent' ON ('table'.'parent_id' = 'parent'.'tbl_id')
WHERE 'table'.'tbl_id' = value;

sans ça il faut systématiquement copier la méthode find dans toutes les classes dérivées pour surcharger cette méthode.

les classes alors surchargées ne peuvent être réutilisé au fils des versions de ZF car elle n'héritent pas de la méthode find. elles doivent à chaque nouvelle version être adapté si besoin.

Je pense que ça ne mange pas de pain et ça rends la requête SQL plus portable et conforme au normes

A+JYT

Hors ligne

 

#2 02-05-2008 16:45:45

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [PROPOSAL]Prefixer les clef primaire dans find de Zend_Db_Table

As-tu ouvert une issue à cette adresse http://framework.zend.com/issues/secure/Dashboard.jspa ?


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#3 04-05-2008 14:38:17

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

Re: [PROPOSAL]Prefixer les clef primaire dans find de Zend_Db_Table

non je proposais une discussion avant voir si ça valait le coup
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