Utilizar Utf8 en Symfony con Doctrine

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.

Posted in Doctrine, Frameworks, Symfony