Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 17-12-2008 11:42:26

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

[Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

Bonjour,
Je débute un peu sur Zend Framework et j'ai l'erreur suivante :

Fatal error: Uncaught exception 'Zend_Db_Table_Row_Exception' with message 'The specified Table 'ParamMagasin' does not have the same primary key as the Row'

Voici ma classe de table :

class ParamMagasin extends Zend_Db_Table
{
    protected $_name = 'PARAM_MAGASIN';
    //protected $_primary = 'cod_magasin';
}

Et mon appel :
$paramMagasin = new ParamMagasin();
$row = $paramMagasin->fetchRow('COD_MAGASIN='.$idMag);//Que ce soit en majuscules ou en minuscules, c'est pareil (et il arrive bien à récupérer la ligne)
//...(Je ne modifie pas la clé)
$row->save(); //c'est cet appel qui lance l'exception

Ma table est param_magasin et a bien la pk param_magasin_pk sur cod_magasin

pour info

$paramMagasin = new ParamMagasin();
$this->view->paramMagasin = $paramMagasin->fetchAll();

Marche à merveille.

Surement une erreur de débutant...Mais laquelle?
Merci

Dernière modification par Fuggerbit (17-12-2008 16:45:42)

Hors ligne

 

#2 17-12-2008 12:09:21

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

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

Hello,

Et ceci fonctionne-t-il ?

Code:

$paramMagasin = new ParamMagasin();
$row = $paramMagasin->find($idMag);
$row->save();

Pour info, ton autoQuoteIdentifier est-il à false ?

A+

Dernière modification par mikaelkael (17-12-2008 12:10:03)


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

Hors ligne

 

#3 17-12-2008 12:14:58

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

J'obtiens :
Call to undefined method Zend_Db_Table_Rowset::save()

mon autoQuoteIdentifier est bien à false

Hors ligne

 

#4 17-12-2008 12:18:04

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

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

Hello,

Bien sûr, j'ai oublié qqch :

Code:

$paramMagasin = new ParamMagasin();
$row = $paramMagasin->find($idMag)->current();
$row->save();

A+


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

Hors ligne

 

#5 17-12-2008 12:22:47

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

Ok, j'obtiens la même erreur qu'au début.
Par contre pourquoi dit il que le nom de la table est ParamMagasin (nom de la classe) au lieu de Param_Magasin? C'est normal

Hors ligne

 

#6 17-12-2008 12:26:34

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

Booohh mikaelkael il a oublié le "current()", pas bien :p

Essaie en dé-commentant la ligne :

Code:

//protected $_primary = 'cod_magasin';

et en t'assurant que ce soit bien le bon champ avec la bonne syntaxe.


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#7 17-12-2008 12:30:10

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

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

Hello,

Parce que par défaut il utilise le nom de classe pour définir le nom de table. Normalement le protected $_name = 'PARAM_MAGASIN'; sert à surcharger ce comportement. C'est bien décommenter comme dans ton exemple ?

@Delprog: il n'est pas obligatoire de mettre $_primary, contrairement à $_name dans son cas, il va la trouver tout seul.

A+

Dernière modification par mikaelkael (17-12-2008 12:30:40)


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

Hors ligne

 

#8 17-12-2008 12:31:45

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

Delprog a écrit:

Booohh mikaelkael il a oublié le "current()", pas bien :p

Essaie en dé-commentant la ligne :

Code:

//protected $_primary = 'cod_magasin';

et en t'assurant que ce soit bien le bon champ avec la bonne syntaxe.


A+ benjamin.

Oui c'est fait, mais c'est pareil...

En fait si je met le cod_magasin en majuscules, il me dit que le champ n'existe pas, donc en minuscule c'est ok (pour la récup des données)

Hors ligne

 

#9 17-12-2008 12:33:01

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

mikaelkael a écrit:

Hello,

Parce que par défaut il utilise le nom de classe pour définir le nom de table. Normalement le protected $_name = 'PARAM_MAGASIN'; sert à surcharger ce comportement. C'est bien décommenter comme dans ton exemple ?

@Delprog: il n'est pas obligatoire de mettre $_primary, contrairement à $_name dans son cas, il va la trouver tout seul.

A+

Oui c'est bien décommenté.

Hors ligne

 

#10 17-12-2008 12:37:08

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

@mikaelkael

Oui c'était un test, pour voir si table n'était par hasard pas mal construite (c'était un peu sans espoir).

@Fuggerbit

Tu peux nous coller ce que contient $row juste après ton fetchRow() ?

Petite remarque: ta classe doit étendre Zend_Db_Table_Abstract et pas Zend_Db_Table (mais rien à voir).

Dernière modification par Delprog (17-12-2008 12:39:21)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#11 17-12-2008 12:39:57

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

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

Hello,

Reprenons depuis le début :
- ZF1.7.1 ?
- adaptateur "oracle" ou "pdo_oci" ?
- quelle version d'Oracle ?

A+

@Delprog : rien à voir mais exact wink

Dernière modification par mikaelkael (17-12-2008 12:41:02)


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

Hors ligne

 

#12 17-12-2008 12:46:19

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

J'utilise ZF 1.7.1
Adapter : Oracle
Version de la bdd : 10 il me semble (pas en dessous en tout cas)

Mon objet row, contient les bonnes valeurs...

Hors ligne

 

#13 17-12-2008 14:16:30

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

Y'a t il un moyen d'afficher tout le contenu de row sans faire appel à chaque valeur?

Hors ligne

 

#14 17-12-2008 14:24:10

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

var_dump() ou print_r(), mais tu n'auras pas que tes données mais aussi tout le reste smile

Enfin tu verras bien.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#15 17-12-2008 15:31:37

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

Delprog a écrit:

var_dump() ou print_r(), mais tu n'auras pas que tes données mais aussi tout le reste smile

Enfin tu verras bien.

Wah en effet...
<?php echo print_r($this->paramMagasin); ?>
retourne

Zend_Db_Table_Row Object ( [_data:protected] => Array ( [ZEND_DB_ROWNUM] => 1 [COD_MAGASIN] => 13 [COEFF_ORIGINE] => 2,5 [COEFF_AJUSTE] => 3,5 [PDS_SEM_M1] => ,7 [PDS_SEM_M2] => ,3 [ECRETAGE] => 4 [ECART_MIN_INJ] => 1 [SEUIL_MAX_INJ] => 30 [COEFF_MINI] => ,5 [COEFF_MAXI] => 3,5 [PCT_REAS_MIN] => 20 [PCT_REAS_MAX] => 35 [QTE_REAS] => 102 [QTE_ROT] => 19 [PCT_FINAL] => 15,7 [PRIORITE] => 1 [ETAT_AJUSTEMENT] => OK [ETAPE1] => [ETAPE2] => [ETAPE3] => [ETAPE4] => O [ETAPE5] => [ACTIF] => O [REASSORT] => O [ROTATIF_PUR] => [COEFF_PREC] => 3,5 [SENS_PREC] => - [MAX_QTE] => 200 ) [_cleanData:protected] => Array ( [ZEND_DB_ROWNUM] => 1 [COD_MAGASIN] => 13 [COEFF_ORIGINE] => 2,5 [COEFF_AJUSTE] => 3,5 [PDS_SEM_M1] => ,7 [PDS_SEM_M2] => ,3 [ECRETAGE] => 4 [ECART_MIN_INJ] => 1 [SEUIL_MAX_INJ] => 30 [COEFF_MINI] => ,5 [COEFF_MAXI] => 3,5 [PCT_REAS_MIN] => 20 [PCT_REAS_MAX] => 35 [QTE_REAS] => 102 [QTE_ROT] => 19 [PCT_FINAL] => 15,7 [PRIORITE] => 1 [ETAT_AJUSTEMENT] => OK [ETAPE1] => [ETAPE2] => [ETAPE3] => [ETAPE4] => O [ETAPE5] => [ACTIF] => O [REASSORT] => O [ROTATIF_PUR] => [COEFF_PREC] => 3,5 [SENS_PREC] => - [MAX_QTE] => 200 ) [_modifiedFields:protected] => Array ( ) [_table:protected] => ParamMagasin Object ( [_name:protected] => PARAM_MAGASIN [_primary:protected] => Array ( [1] => cod_magasin ) [_db:protected] => Zend_Db_Adapter_Oracle Object ( [_config:protected] => Array ( [dbname] => TEST-ORCL [username] => READYN [password] => READYN [host] => vxnkora1.xanit.mad [options] => Array ( [caseFolding] => 2 [autoQuoteIdentifiers] => 0 ) [driver_options] => Array ( ) ) [_numericDataTypes:protected] => Array ( [0] => 0 [1] => 1 [2] => 2 [BINARY_DOUBLE] => 2 [BINARY_FLOAT] => 2 [NUMBER] => 2 ) [_execute_mode:protected] => 32 [_defaultStmtClass:protected] => Zend_Db_Statement_Oracle [_fetchMode:protected] => 2 [_profiler:protected] => Zend_Db_Profiler Object ( [_queryProfiles:protected] => Array ( ) [_enabled:protected] => [_filterElapsedSecs:protected] => [_filterTypes:protected] => ) [_defaultProfilerClass:protected] => Zend_Db_Profiler [_connection:protected] => Resource id #114 [_caseFolding:protected] => 2 [_autoQuoteIdentifiers:protected] => ) [_schema:protected] => [_cols:protected] => Array ( [0] => cod_magasin [1] => coeff_origine [2] => coeff_ajuste [3] => pds_sem_m1 [4] => pds_sem_m2 [5] => ecretage [6] => ecart_min_inj [7] => seuil_max_inj [8] => coeff_mini [9] => coeff_maxi [10] => pct_reas_min [11] => pct_reas_max [12] => qte_reas [13] => qte_rot [14] => pct_final [15] => priorite [16] => etat_ajustement [17] => etape1 [18] => etape2 [19] => etape3 [20] => etape4 [21] => etape5 [22] => actif [23] => reassort [24] => rotatif_pur [25] => coeff_prec [26] => sens_prec [27] => max_qte ) [_identity:protected] => 1 [_sequence:protected] => 1 [_metadata:protected] => Array ( [cod_magasin] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => cod_magasin [COLUMN_POSITION] => 1 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => [LENGTH] => 22 [SCALE] => 0 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => 1 [PRIMARY_POSITION] => 1 [IDENTITY] => ) [coeff_origine] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => coeff_origine [COLUMN_POSITION] => 2 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [coeff_ajuste] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => coeff_ajuste [COLUMN_POSITION] => 3 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [pds_sem_m1] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => pds_sem_m1 [COLUMN_POSITION] => 4 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [pds_sem_m2] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => pds_sem_m2 [COLUMN_POSITION] => 5 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [ecretage] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => ecretage [COLUMN_POSITION] => 6 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 0 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [ecart_min_inj] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => ecart_min_inj [COLUMN_POSITION] => 7 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 0 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [seuil_max_inj] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => seuil_max_inj [COLUMN_POSITION] => 8 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 0 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [coeff_mini] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => coeff_mini [COLUMN_POSITION] => 9 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [coeff_maxi] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => coeff_maxi [COLUMN_POSITION] => 10 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [pct_reas_min] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => pct_reas_min [COLUMN_POSITION] => 11 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [pct_reas_max] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => pct_reas_max [COLUMN_POSITION] => 12 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [qte_reas] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => qte_reas [COLUMN_POSITION] => 13 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 0 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [qte_rot] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => qte_rot [COLUMN_POSITION] => 14 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 0 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [pct_final] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => pct_final [COLUMN_POSITION] => 15 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [priorite] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => priorite [COLUMN_POSITION] => 16 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 0 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [etat_ajustement] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => etat_ajustement [COLUMN_POSITION] => 17 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [etape1] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => etape1 [COLUMN_POSITION] => 18 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [etape2] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => etape2 [COLUMN_POSITION] => 19 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [etape3] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => etape3 [COLUMN_POSITION] => 20 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [etape4] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => etape4 [COLUMN_POSITION] => 21 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [etape5] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => etape5 [COLUMN_POSITION] => 22 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [actif] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => actif [COLUMN_POSITION] => 23 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [reassort] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => reassort [COLUMN_POSITION] => 24 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [rotatif_pur] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => rotatif_pur [COLUMN_POSITION] => 25 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [coeff_prec] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => coeff_prec [COLUMN_POSITION] => 26 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 2 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [sens_prec] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => sens_prec [COLUMN_POSITION] => 27 [DATA_TYPE] => VARCHAR2 [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 10 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) [max_qte] => Array ( [SCHEMA_NAME] => readyn [TABLE_NAME] => param_magasin [COLUMN_NAME] => max_qte [COLUMN_POSITION] => 28 [DATA_TYPE] => NUMBER [DEFAULT] => [NULLABLE] => 1 [LENGTH] => 22 [SCALE] => 0 [PRECISION] => 9 [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) ) [_metadataCache:protected] => [_metadataCacheInClass:protected] => 1 [_rowClass:protected] => Zend_Db_Table_Row [_rowsetClass:protected] => Zend_Db_Table_Rowset [_referenceMap:protected] => Array ( ) [_dependentTables:protected] => Array ( ) [_defaultSource:protected] => defaultNone [_defaultValues:protected] => Array ( ) ) [_connected:protected] => 1 [_readOnly:protected] => [_tableClass:protected] => ParamMagasin [_primary:protected] => Array ( [1] => cod_magasin ) ) 1

Ce qui m'échappe c'est qu'un coup les champs sont en majuscule, l'autre coup en minuscule...
Est il judicieux pour moi d'avoir : db.params.options.caseFolding  = 2 ?
Ca pourait être une erreur du genre cod_magasin n'est pas pareil que COD_MAGASIN pour lui

Hors ligne

 

#16 17-12-2008 15:47:01

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

Euh, c'est le $row que tu essaies d'écrire qui m'intéresse plutôt smile


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#17 17-12-2008 15:52:00

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

Delprog a écrit:

Euh, c'est le $row que tu essaies d'écrire qui m'intéresse plutôt smile

C'est bien ca wink :

$row = $paramMagasin->find($idMag)->current();
$this->view->paramMagasin = $paramMagasin->fetchRow();

Ou alors je suis un boulet et je comprend rien à ce que tu me demande tongue C'est au choix ^^
Comme je débute à la fois en PHP et en Zend...

Hors ligne

 

#18 17-12-2008 16:10:03

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

Au temps pour moi, j'avais mal regardé smile

A priori je dirais que ça n'a pas de rapport avec la casse.

Le caseFolding = 2 te permet de faire $_name = 'param_magasin' à la place de 'PARAM_MAGASIN', je ne vois pas de rapport.

Après je ne connais pas bien oracle et ses adaptateurs, donc à ce niveau je ne saurais te dire. Mais je doute que ça ait un rapport.

As-tu testé par curiosité avec l'adaptateur "pdo_oci" ?

Peux-tu linker la config de ton DbAdapter ? (hors identifiants bien sûr :p)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#19 17-12-2008 16:17:24

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

Delprog a écrit:

Au temps pour moi, j'avais mal regardé smile

A priori je dirais que ça n'a pas de rapport avec la casse.

Le caseFolding = 2 te permet de faire $_name = 'param_magasin' à la place de 'PARAM_MAGASIN', je ne vois pas de rapport.

Après je ne connais pas bien oracle et ses adaptateurs, donc à ce niveau je ne saurais te dire. Mais je doute que ça ait un rapport.

As-tu testé par curiosité avec l'adaptateur "pdo_oci" ?

Peux-tu linker la config de ton DbAdapter ? (hors identifiants bien sûr :p)

Avec pdo_oci je me tappe des erreurs dès la connexion :
Uncaught exception 'Zend_Db_Adapter_Exception' with message 'SQLSTATE[HY000]: pdo_oci_handle_factory: ORA-12505: TNS:listener does not currently know of SID given in connect descriptor (/builddir/build/BUILD/php-5.2.6/ext/pdo_oci/oci_driver.c:581)'

sinon voici ma config db :
[general]
db.adapter = Oracle
db.params.host = blabla
db.params.username = blabla
db.params.password = blabla
db.params.dbname = TEST-ORCL
db.params.options.caseFolding  = 2
db.params.options.autoQuoteIdentifiers = false

dans mon index.php :
// Chargement de la configuration
$config = new Zend_Config_Ini('./application/config.ini', 'general');
$registry = Zend_Registry::getInstance();
$registry->set('config', $config);

// Mise en place de la BDD
$db = Zend_Db::factory($config->db);
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('dbAdapter', $db);

Hors ligne

 

#20 17-12-2008 16:27:59

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

Je suis désolé mais je ne sais pas vraiment t'aider, n'ayant jamais expérimenté une BDD Oracle et Zend.

Par contre je lis quelques trucs sur la doc et entre autre :

Actuellement l'option Zend_Db::CASE_FOLDING n'est pas supportée par l'adaptateur Oracle. Pour l'utiliser, vous devez utiliser l'adaptateur basé sur PDO et OCI.

Ce que je peux dire n'a sans doute aucun rapport, je parle un peu sans savoir, donc je vais laisser les autres t'aider.

Pour info :
http://framework.zend.com/manual/fr/zen … tes.oracle

Un exemple de config basique:

Code:

[xxxxx]
db.adapter = pdo_oci;
db.params.host = nomDuServeur
db.params.username = xxxxx
db.params.password =xxxxx
db.params.dbname = nomDeLaBase
db.params.options.caseFolding  = 2
db.params.options.autoQuoteIdentifiers = 0

A+ benjamin.

Dernière modification par Delprog (17-12-2008 16:33:24)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#21 17-12-2008 16:44:03

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

Delprog a écrit:

Je suis désolé mais je ne sais pas vraiment t'aider, n'ayant jamais expérimenté une BDD Oracle et Zend.

Par contre je lis quelques trucs sur la doc et entre autre :

Actuellement l'option Zend_Db::CASE_FOLDING n'est pas supportée par l'adaptateur Oracle. Pour l'utiliser, vous devez utiliser l'adaptateur basé sur PDO et OCI.

Ce que je peux dire n'a sans doute aucun rapport, je parle un peu sans savoir, donc je vais laisser les autres t'aider.

Pour info :
http://framework.zend.com/manual/fr/zen … tes.oracle

Un exemple de config basique:

Code:

[xxxxx]
db.adapter = pdo_oci;
db.params.host = nomDuServeur
db.params.username = xxxxx
db.params.password =xxxxx
db.params.dbname = nomDeLaBase
db.params.options.caseFolding  = 2
db.params.options.autoQuoteIdentifiers = 0

A+ benjamin.

Figures toi que ca fonctionne maintenant !!! big_smile
En fait avec case folding actif, il détecte les noms des champs en minuscule, dont on doit setter la clée en minuscule, mais après il doit la voir en majuscule et trouver les champs différents!
J'avais pris le case folding de ce post... http://www.z-f.fr/forum/viewtopic.php?id=1973
En fait tu as raison je pense qu'il ne faut surtout pas utiliser le case folding avec l'adapter Oracle.
En tout cas merci beaucoup à toi wink

Hors ligne

 

#22 17-12-2008 21:43:25

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

Re: [Résolu][Zend_Db][1.7.1]Table does not have the same primary key as...

Hello,

Désolé de vous avoir quitter dans cette conversation, Oracle ne supporte pas le case folding, c'est pour cela que l'on utilise entre autres le paramètre autoQuoteIdentifier pour s'affranchir de problème de casse. Cependant il est exact que le paramètre a une influence : lors du describeTable() fait en interne à l'instanciation de l'objet table, un foldCase est réalisé sur les noms de colonnes, la casse définie par "db.params.options.caseFolding" doit donc correspondre à celle que tu utilises dans ton code.

Pour pdo_oci, il faut lui mettre le sid de ta base et non le dbname dans le paramètre dbname.

A+


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

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