2011-08-03 43 views
0

我们正在使用Cakephp开发一个巨大的项目。我们已经开始使用MySQL,但现在他们要求转向Oracle!现在,我们开始了这个可爱的任务! :)CakePHP + Oracle + CamelCased列表名称问题

我们是而不是使用cakephp模式,但骆驼名称的表和它的列(这是客户的要求!)。

Oracle中的列表名称区分大小写,因为我们在创建表格时将名称放在“”(双引号)之间。如果我们不这样做的话,Oracle会把它放大。

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

而不是

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

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

没有任何人有任何想法如何克服?

+0

oracle dbms **中的列名是**区分大小写的。如果你不用双引号显式指定它 - 所有的名字都是上面的。 – zerkms

+0

你说得对,zerkms!我已经更新了这个问题。 – colares

+0

更新: 更改CamelCase符号不是一个选项。 现在,我们做了以下操作: - 针对Oracle的CakePHP驱动程序的改进(我们可以稍后发布!) - 创建一个映射表名称的脚本(例如idperson => IdPerson)。这可能不是最好的方法。至少,我们将使用查询缓存。 ;) 另外,我们面临着很多由MySQL和Oracle之间的差异引起的问题,它们是CakePHP中的驱动程序。 我们已经知道“变化的司机”是纯粹的幻觉。但仍然有一些意想不到的问题。这将是一篇不错的论文。 我会尽全力让您发布。 – colares

回答

1

我认为你需要和你的客户进行一次深入的交谈。如果骆驼套是客户需求,那么他们不应该使用Oracle。你不能同时拥有这两个,这将是一个黑客混乱,因为Oracle中的所有东西都会得到大写,表格,列,存储过程和列表。

你最终会用“Table1”,“Column1”引号来攻击所有东西。这不会高度维护,并且每个Oracle DBA在查看数据库结构时都需要进行上下文切换。

他们,您的客户,需要使用Oracle标准或不使用Oracle。

+0

是的,Marthinus!我们已经开始这个谈话,然后我意识到这将是明智的获得良好的论点。 我们也了解了这种引用行为,但重点是:“是否真的是重新编码/修改CakePHP Oracle Drive的好方法?”?我们不这么认为,因为我们反对Oracle标准,就像你说的。 – colares

+0

我个人很讨厌客户开始处方技术。你在很多领域都有专家,所以如果你不能相信你所选择的领域的专家,在这种情况下,他们就是选择的软件开发供应商,那么这种关系就没有一个良好的开端。 我们公司通常根本不会接受这样的行为,我们只是用简单的英语写下来,要么你信任我们和我们的记录,要么我们不做生意。 – Marthinus

+0

我们仍在处理这个问题。一旦我们决定最终的解决方案,我会在这里分享。 – colares