Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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
$whereAndTerms[] = $this->_db->quoteInto( $this->_db->quoteIdentifier($keyNames[$keyPosition], true) . ' = ?', $keyValue, $type);
par
$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
SELECT ... FROM 'table' WHERE 'tbl_id' = value;
devient
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
SELECT ... FROM 'table' INNER JOIN 'table' AS 'parent' ON ('table'.'parent_id' = 'parent'.'tbl_id') WHERE 'tbl_id' = value;
SQL ERROR : ambigous tbl_id
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
As-tu ouvert une issue à cette adresse http://framework.zend.com/issues/secure/Dashboard.jspa ?
Hors ligne
non je proposais une discussion avant voir si ça valait le coup
A+JYT
Hors ligne
Pages: 1