Oracle CakePHP+;甲骨文+;CamelCased列表名称问题

Oracle CakePHP+;甲骨文+;CamelCased列表名称问题,oracle,cakephp,names,camelcasing,Oracle,Cakephp,Names,Camelcasing,我们正在使用Cakephp进行一个大型项目。我们已经开始使用MySQL,但现在他们要求迁移到Oracle!现在,我们刚刚开始这个可爱的任务!:) 我们使用的不是cakephp模式,而是表及其列的大小写名称(这是客户端的要求!) Oracle中的列表名区分大小写,因为我们在创建表时将名称放在“”之间(双引号)。如果我们不这样做,甲骨文公司就会把它放在大写字母上 但是cakephp的oracle驱动器似乎忽略了camelcased配置,总是不区分大小写地解析字段名,并在查询结果数组中将名称转换为小写

我们正在使用Cakephp进行一个大型项目。我们已经开始使用MySQL,但现在他们要求迁移到Oracle!现在,我们刚刚开始这个可爱的任务!:)

我们使用的不是cakephp模式,而是表及其列的大小写名称(这是客户端的要求!)

Oracle中的列表名区分大小写,因为我们在创建表时将名称放在“”之间(双引号)。如果我们不这样做,甲骨文公司就会把它放在大写字母上

但是cakephp的oracle驱动器似乎忽略了camelcased配置,总是不区分大小写地解析字段名,并在查询结果数组中将名称转换为小写

而不是

$res['TableName']['ColumnName']  //camelcased
我得到


有人知道如何克服它吗?

我认为你需要与你的客户进行一次艰苦的交谈。如果客户要求使用驼峰式外壳,那么他们不应该使用Oracle。你不能两者兼得,这将是一个混乱的局面,因为Oracle中的所有内容都是大写的,表、列、存储过程等等

你最终会用“Table1”、“Column1”的引号来破解一切。这不是高度可维护的,每个Oracle DBA在查看数据库结构时都需要切换上下文


他们,即您的客户,要么需要遵循Oracle标准,要么不使用Oracle。

Oracle dbms中的列名区分大小写。如果你没有用双引号显式地指定,所有的名字都是大写的。你说得对,虫族!我已经更新了问题。更新:更改CamelCase符号不是一个选项。现在,我们做了以下工作:-改进了Oracle的CakePHP驱动程序(我们可以稍后发布!)-创建了一个脚本来映射表的名称(例如idperson=>idperson)。这可能不是最好的方法,。至少,我们将使用查询缓存此外,由于MySQL和Oracle(它们在CakePHP中的驱动程序)之间的差异,我们还面临许多问题。我们已经知道“只是换司机”纯粹是幻想。但还是有一些意想不到的问题。这将是一份很好的论文。我会随时通知你们的。是的,马提努斯!我们已经开始讨论了,然后我意识到得到好的论据是明智的。我们还了解了这种引用行为,但重点是:“这真的是重新编码/修改CakePHP Oracle驱动器的好方法吗?”?我们不这么认为,因为正如你所说,我们反对Oracle标准。就我个人而言,我讨厌客户开始开技术处方。你有很多领域的专家,所以如果你不能信任你所选择的专家在他们的领域,在这种情况下是选择的软件开发供应商,那么这种关系就没有一个良好的开端。我们公司通常根本不考虑这种行为,我们只是简单地用英语写下来,要么你信任我们和我们的业绩记录,要么我们不做生意。我们仍在处理这件事。一旦我们决定了最终的解决方案,我将在这里分享。
$res['TableName']['columnname']  //lowercased! :(