Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 19-09-2007 15:43:00

internet05
Membre
Date d'inscription: 19-09-2007
Messages: 11

[Zend_Db_Table][1.0.0]Problème avec Zend_Db_Table sous Oracle 10

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

 

#2 19-09-2007 16:24:12

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Zend_Db_Table][1.0.0]Problème avec Zend_Db_Table sous Oracle 10

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


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#3 20-09-2007 08:55:15

TiTerm
Membre
Date d'inscription: 01-07-2007
Messages: 175

Re: [Zend_Db_Table][1.0.0]Problème avec Zend_Db_Table sous Oracle 10

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

 

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