Ticket #71 (closed 要望/提案: fixed)
テーブル名がすべて大文字英字だった場合への対応
| Reported by: | kumatch | Owned by: | iteman |
|---|---|---|---|
| Priority: | major | Milestone: | 1.0.0 |
| Component: | 01: マッパー | Version: | The Latest Version of 1.0 |
| Keywords: | Cc: | ||
| Blocking: | Blocked By: |
Description
現在のところ、参照しようとするテーブルの名称がすべて大文字の英字だった場合、マッパー名からのテーブル名変換がうまくいかず参照に失敗する。
以下のパッチを適応することで、マッパー名指定がすべて大文字英字だった場合はstrtolowerしないよう振舞うことで問題は回避できる。
ただしこのパッチでは、大文字と小文字が入り乱れるテーブル名だった場合に対応できない。
全般的に対応するのであれば、getMapper() 第2引数として名称の変換是非フラグを付与させるような方法が考えられる。
--- ORM/Inflector.php
+++ ORM/Inflector.php
@@ -101,9 +101,15 @@
*/
function underscore($word)
{
- return strtolower(preg_replace('/[^A-Z^a-z^0-9]+/', '_',
- preg_replace('/([a-z\d])([A-Z])/', '\1_\2',
- preg_replace('/([A-Z]+)([A-Z][a-z])/', '\1_\2', $word))));
+ $word = preg_replace('/[^A-Z^a-z^0-9]+/', '_',
+ preg_replace('/([a-z\d])([A-Z])/', '\1_\2',
+ preg_replace('/([A-Z]+)([A-Z][a-z])/', '\1_\2', $word)));
+
+ if (preg_match('/^[A-Z0-9_]+$/', $word)) {
+ return $word;
+ } else {
+ return strtolower($word);
+ }
}
// }}}
Change History
Note: See
TracTickets for help on using
tickets.

