私たちはCakephpを使った巨大なプロジェクトに取り組んでいます。 MySQLの使用を開始しましたが、現在はOracleに移行するよう求めています!さて、この素敵な仕事を始めました! :)CakePHP + Oracle + CamelCaseの列テーブル名の問題
私たちはではない cakephpパターンを使用していますが、テーブルとその列のためのラクダのケース名(これはクライアント要件でした)。
Oracleの列テーブル名は、テーブルの作成時に ""(二重引用符)の間に名前を付けるので、大文字と小文字が区別されます。もしそうでなければ、オラクルは大文字を付けました。
しかし、cakephpのオラクルドライブはcamelcased構成を無視して、フィールド名を常に大文字小文字を区別せずに解析し、名前をクエリ結果配列で小文字に変換します。
代わりの
$res['TableName']['ColumnName'] //camelcased
私は
$res['TableName']['columnname'] //lowercased! :(
誰もがそれを克服するためにどのように任意のアイデアを持っていましたか?
oracle dbms **の列名は大文字と小文字が区別されます。また、二重引用符で明示的に指定しないと、すべての名前が大文字になります。 – zerkms
あなたは正しく、zerkmsです!私は質問を更新しました。 – colares
更新: 変更CamelCase記法はオプションではありませんでした。 - Oracle用のCakePHPドライバの改良点(後で掲載することができます) - テーブルの名前をマッピングするスクリプトを作成しました(例:idperson => IdPerson)。それはおそらく最善の方法ではありません。少なくとも、クエリキャッシュを使用します。 ;) さらに、私たちは、MySQLとOracleの違い、CakePHPでのドライバの違いによって引き起こされる多くの問題に直面しています。 「ただ変化するドライバー」は純粋な錯覚であることはすでに知っています。しかし、予期しない問題が残っていました。これは良い紙になります。 私はあなたのすべてを投稿します。 – colares