Doctrine con columnas en mayúsculas
Por defecto el ORM Doctrine 1.4 no soporta columnas de base de datos en mayúsculas, porque algunas de las bases de datos soportadas tampoco las aceptan. Pero si te encuentras con una base de datos legacy MySQL que ya las tiene y que no se puede cambiar, es muy fácil modificar el código de la clase Doctrine_Table para que no se queje. A continuación el diff de cambios.
--- Doctrine_before/Table.php 2010-08-31 13:09:56.574622052 +0200 +++ Doctrine_after/Table.php 2010-08-31 13:09:40.933372114 +0200 @@ -1168,7 +1168,7 @@ return $this->_columnNames[$fieldName]; } - return strtolower($fieldName); + return $fieldName; } /** @@ -1195,8 +1195,10 @@ */ public function getFieldName($columnName) { - if (isset($this->_fieldNames[$columnName])) { - return $this->_fieldNames[$columnName]; + foreach($this->_fieldNames as $k=>$v){ + if(strtolower($k)==strtolower($columnName)){ + return $v; + } } return $columnName; } @@ -1316,10 +1318,9 @@ } else { $fieldName = $parts[0]; } - $name = strtolower($parts[0]); + $name = $parts[0]; } else { $fieldName = $name; - $name = strtolower($name); } $name = trim($name); @@ -1462,7 +1463,12 @@ */ public function hasColumn($columnName) { - return isset($this->_columns[strtolower($columnName)]); + foreach($this->_columns as $k=>$v){ + if(strtolower($k)==strtolower($columnName)){ + return true; + } + } + return false; } /**
La clave es getFieldName que acepte $columName en mayúsculas y en minúsculas porque a veces se pasa de una forma y a veces de otra.
- categorías
- programación ,
- tags
- doctrine, php, symfony ,
- autor
- zero ,
- fecha
- 28 de julio de 2010 ,
- 2 comentarios
Hola, oye y si se trabaja con postgres y ademas de las columnas, tambien hay campos con mayusculas que se puede hacer?? ademas estoy trabajando con symfony
Mmm, no sé si te refieres a campos de doctrine, los campos ya pueden estar en mayúsculas. En teoría con postgres también tendría que funcionar.