Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'ai un problème quand je veux créer un objet Zend_Db_Table sous Oracle (mon exemple marche avec MySql, mais je voudrais que ça marche aussi avec Oracle).
* La table
CREATE TABLE sport (
idSport INTEGER,
libelle varchar(50) NOT NULL,
PRIMARY KEY (idSport)
);
INSERT INTO sport VALUES (100, 'Basket');
INSERT INTO sport VALUES (101, 'Foot');
INSERT INTO sport VALUES (102, 'Volley');
* La Zend_Db_Table correpondante
<?php
class Sport extends Zend_Db_Table_Abstract
{
protected $_name = 'sport';
protected $_primary = 'idSport';
protected $_dependentTables = array('Pratiquer'); // attention : nom de la classe, pas de la table !
}
?>
* L'erreur quand je fais $sportTableProxy = new Sport(); indique Pb de clé primaire, mais pourquoi ???
idSpprt est bien la PK de ma table...
Fatal error: Uncaught exception 'Zend_Db_Table_Exception' with message 'Primary
key column(s) (idSport) are not columns in this table ()' in C:\Perso\tools\lang
uages\php\zend_framework\ZendFramework-1.0.0\library\Zend\Db\Table\Abstract.php:
651
Stack trace:
#0 C:\Perso\tools\languages\php\zend_framework\ZendFramework-1.0.0\library\Zend\
Db\Table\Abstract.php(529): Zend_Db_Table_Abstract->_setupPrimaryKey()
#1 C:\Perso\tools\languages\php\zend_framework\ZendFramework-1.0.0\library\Zend\
Db\Table\Abstract.php(264): Zend_Db_Table_Abstract->_setup()
#2 C:\Perso\tools\languages\php\zend_framework\ZendFramework-1.0.0\oracle-zend-f
ramework.php(48): Zend_Db_Table_Abstract->__construct()
#3 {main}
thrown in C:\Perso\tools\languages\php\zend_framework\ZendFramework-1.0.0\libr
ary\Zend\Db\Table\Abstract.php on line 651
Hors ligne
Bonjour,
Je n'ai pas utilisé Zend_Db_Table avec Oracle, mais avec Zend_Db "classique", j'ai eu pas mal de problème parce que Oracle me mettait tous les noms de colonnes en majuscules.
Donc après quand je récupérais mes objets, je devais faire des strtoupper sur mes noms de colonnes pour faire un match avec les données renvoyées par fetchAll.
J'ai réglé le problème en modifiant mon système d'ORM, mais je pense qu'il y a plus simple en cherchant dans les confs d'Oracle. Je pense qu'il y a moyen de lui dire de retenir la casse des colonnes... A mon avis il faut fouiller dans les forums oracle dans ce sens...
A+, Philippe
Hors ligne
En fait cela dépend de l'adapter que tu utilises. Si tu prend OCI, je ne pense pas qu'il y ait de de possibilité d'utiliser les minuscules (en tout cas, pas systématiquement).
Mais d'après la doc, PDO_OCI semble gérer l'option CASE_FOLDING.
Perso, je n'ai pas le driver PDO_OCI sur mes serveurs, j'utilise donc la version OCI.
Et le seul pb que j'ai pu avoir a été résolu via cette options a fournir a Zend_Db::factory()
Zend_Db::AUTO_QUOTE_IDENTIFIERS => false
Par contre, je met tous mes noms de table, vue, séquence etc en majuscule car sinon, il y a certain cas ou il y a des erreurs.
Dans ton cas, essai avec $_name='SPORT' et $_primary = 'IDSPORT' (bien qu'ici, le $_name soit optionnel puisqu'il match le nom de la classe)
Hors ligne
Pages: 1