На сайте крокозяблики. Заходим в phpMyAdmin - там все ок. Быстрый анализ привел в тому, что нужно выполнить SET NAMES UTF8 сразу после создания соединения. Однако, мы помним, что у нас Doctrine ORM и где там это выполнить? Вот об этом я сейчас расскажу.
Если углубиться в структуру ORM, то мы увидим, что на нижнем уровне есть уровень драйверов для соединения с конкретной БД. Задача сразу становится проще.
В файле /concrete/src/Database/Driver/PDOMySqlConcrete5/Driver.php
Метод connect должен быть реализован следующим образом:
- Код: Выделить всё
public function connect(array $params, $username = null, $password = null, array $driverOptions = array())
{
$conn = new PDOConnection(
$this->_constructPdoDsn($params),
$username,
$password,
$driverOptions
);
if (isset($params['charset'])) {
$conn->query('SET NAMES \''.$params['charset'].'\'');
}
return $conn;
}
Странно, но на мастерхосте передача кодировки в DSN строке почему-то не работает.