2011-01-14 10 views
3

Kennt jemand eine Möglichkeit, DBAL/Doctrine2 in einer symfony2 (symfony-reloaded) Konfigurationsdatei zu konfigurieren, um eine "set names" -Abfrage auszuführen? Diese Frage wurde an anderen Stellen gestellt, aber ich konnte keine richtige Antwort finden.Konfigurieren von DBAL über Symfony2 zum Setzen von Zeichensatz

http://fossplanet.com/f6/%5Bsymfony-users%5D-symfony2-sandbox-database-collation-49626/

Wenn es keine solche Konfigurationsoption ist, wie kann ich diese mit PHP implementieren? Oder besser: Wo ist der richtige Ort in einem Symfony2-Projekt?

Antwort

4

Das ist noch nicht möglich. Ich arbeite daran, dies bereits zuzulassen, wird bald möglich sein.

+0

Danke für die Antwort! In dem Beispiel, das ich oben verlinkt habe, macht der Autor diese Art von Konfiguration woanders. Könntest du dir vorstellen, was dafür ein guter Platz wäre? Ich denke, es muss einen Weg geben, utf8 mit symfony2/doctrine2/mysql !? – Paul

+1

ok, ein Patch für diese Symfony vor einigen Tagen angewendet wurde, würde die Syntax sein: doctrine.dbal: Verbindungen: default: charset: UTF-8 – beberlei

+0

Ich bin mit Symfony nicht, wo muss ich Stellen Sie die Codierung dann ein? Momentan benutze ich '\ PDO :: MYSQL_ATTR_INIT_COMMAND =>" SET NAMES utf8 "' in den PDO-Attributen, aber es sieht nicht nach der besten Lösung aus. –

1

Ok, nur für alle anderen, die auf dieses Problem stoßen könnten. Das ist, was ich tat:

Ich landete Subklassen Symfony\Bundle\FrameworkBundle\Controller\Controller und stellte das Verfahren getEntityManager:

public function getEntityManager() 
{ 
    $em = $this->get('doctrine.orm.entity_manager'); 
    static $utf8_set = false; 
    if (!$utf8_set) { 
     $em->getEventManager()->addEventSubscriber(new MysqlSessionInit('utf8','utf8_unicode_ci')); 
     $utf8_set = true; 
    } 
    return $em; 
} 

Also immer wenn ich bin das EntityManager oder ein Repository in meinem Controller (jetzt was natürlich zugreifen will Unterklasse DoctrineController) Ich rufe

$this->getEntityManager() 

resp.

$this->getEntityManager()->getRepository('What\Ever\Entity\I\Am\Looking\For') 
+0

Das wäre besser in einem 'DoctrineControllerTrait'. :) – juanmf