Vemos como configurar Doctrine para utilizar utf8 en Symfony.
En este post veremos como establecer el charset y collation de nuestra base de datos a UTF8, lo cual en determinadas ocasiones es necesario, por ejemplo, cuando queremos utilizar una base de datos que nos sirva para internacionalización (i18N).
Para realizar esto tenemos tres posibilidades, veamos las tres:
La primera que veremos es la opción en la que editaremos el archivo config/ProjectConfiguration.class.php
<?phpclass ProjectConfiguration extends sfProjectConfiguration { public function setup() { $this->enablePlugins('sfDoctrinePlugin'); } public function configureDoctrine(Doctrine_Manager $manager) { $manager->setCollate('utf8_unicode_ci'); $manager->setCharset('utf8'); } } ?>
Otra manera de setear a utf8 es configurando la base de datos en el archivo config/databases.yml
all:
doctrine:
class: sfDoctrineDatabase
param:
dsn: mysql:host=localhost;dbname=myDatabse
username: myUser
password: mySecret
attributes:
default_table_type: InnoDB
default_table_collate: utf8_unicode_ci
default_table_charset: utf8
Y la última alternativa es seteando las opciones en nuestro schema en config/doctrine/schema.yml
options: collate: utf8_unicode_ci charset: utf8 type: InnoDB
Espero que les sea de utilidad.
Fuente: http://symfony.davidvega.net


3 Comentarios:
wolkmx:
03 de Septiembre de 2010 a las 19:08:46Muy buen tip, estaba dandome topes con esto, pero una pregunta, veras, mis tablas y sus campos los crea ya correctamente en utf8, estoy usando la segunda opcion de configurancion,es decir modifique el archivo databases.yml, pero veras mi BD, la sigue creando con el latin1, lo puedo cambiar a mano, pero qusiera saber si alguien sabe como configurar symfony para que automaticamente cree la bd como utf8. Repito solo pregunto por ocio, por ahora me esta funcionando todo bien.
hasheado:
09 de Septiembre de 2010 a las 13:57:11@wolkmx: Si utilizas la última opción, es decir, en las opciones de cada tabla, obtendrás que todas tus tablas de la base de datos sean utf8.
wolkmx:
13 de Enero de 2011 a las 16:38:08Gracias por la respuesta, al final quedo solucionado, jeje disculpa la tardanza.