2011-08-03 11 views
0

Nous travaillons sur un énorme projet utilisant Cakephp. Nous avons commencé à utiliser MySQL, mais maintenant ils demandent à passer à Oracle! Maintenant, nous venons de commencer cette belle tâche! :)CakePHP + Oracle + CamelCased nom de la table de colonnes numéro

Nous sommes pas en utilisant des modèles de cakephp, mais les noms chameau en cas de tables et de ses colonnes (C'était une exigence du client!).

Les noms de table de colonnes dans Oracle sont sensibles à la casse puisque nous mettons le nom entre "" (guillemets) lors de la création de tables. Si ce n'est pas le cas, Oracle met les majuscules.

Mais le lecteur d'oracle de cakephp semble ignorer la configuration camelcased, analyser le nom de champ toujours insensible à la casse et transformer les noms en minuscules dans le tableau des résultats de la requête.

Au lieu de

$res['TableName']['ColumnName'] //camelcased 

J'obtenu

$res['TableName']['columnname'] //lowercased! :(

Est-ce que quelqu'un a une idée comment la surmonter?

+0

Les noms de colonnes dans oracle dbms ** sont sensibles à la casse. Et si vous ne le spécifiez pas explicitement entre guillemets, tous les noms sont en majuscule. – zerkms

+0

Vous avez raison, zerkms! J'ai mis à jour la question. – colares

+0

Mise à jour: La modification de la notation CamelCase n'était pas une option. Pour l'instant, nous avons fait ce qui suit: - Améliorations dans le pilote CakePHP pour Oracle (nous pouvons poster plus tard!) - Créé un script pour mapper le nom des tables (par exemple idperson => IdPerson). Ce n'est probablement pas la meilleure approche. Au moins, nous utiliserons le cache de requête. ;) En outre, nous sommes confrontés à de nombreux problèmes causés par les différences entre MySQL et Oracle, leurs pilotes dans CakePHP. Nous savons déjà que le "pilote qui change juste" est une pure illusion. Mais avait encore des problèmes inattendus. Ce serait un bon papier. Je vous tiendrai au courant. – colares

Répondre

1

Je pense que vous avez besoin de parler dur avec votre client. Si le chamelage est une exigence du client, il ne doit pas utiliser Oracle. Vous ne pouvez pas avoir les deux, ce sera un gâchis piraté, puisque tout dans Oracle est en majuscules, tables, colonnes, procs stockés et la liste continue.

Vous finirez par tout pirater avec "Table1". Citations "Colonne1". Cela ne sera pas hautement maintenable et chaque administrateur de base de données Oracle devra changer de contexte lorsqu'il examinera les structures de la base de données.

Ils, votre client, doivent soit aller avec les normes Oracle ou ne pas utiliser Oracle.

+0

Oui, Marthinus! Nous avons commencé cette discussion, puis je me rends compte que ce serait sage d'avoir de bons arguments. Et nous avons également appris à propos de ce comportement de citations, mais le point est: "Est-ce vraiment un bon moyen de re-code/modifier CakePHP Oracle Drive"? Nous ne le pensons pas, puisque nous sommes contre les standards Oracle, comme vous l'avez dit. – colares

+0

Personnellement, je déteste quand un client commence à prescrire la technologie. Vous avez des experts dans de nombreux domaines, donc si vous ne pouvez pas faire confiance à vos experts choisis dans leur domaine, qui dans ce cas est le fournisseur de développement logiciel choisi, alors la relation n'est pas du tout un bon début. Habituellement, notre société n'apprécie pas du tout ce genre de comportement, nous l'écrivons simplement en anglais, que ce soit en nous faisant confiance ou en faisant nos preuves, ou nous ne faisons pas affaire. – Marthinus

+0

Nous sommes toujours confrontés à cela. Une fois que nous avons décidé de la solution finale, je vais partager ici. – colares