Intereting Posts
PHP Получить имя текущего каталога Как заменить узел XML на SimpleXMLElement PHP Ошибка запроса PDO PHP в таблице имеет тип данных json (MySQL 5.7.8-rc) PHP включает в себя пробел в верхней части страницы Поиск php на частичном IP-адресе, хранящемся в mysql, как unsigned int Уведомление в корзине Woocommerce, показывающее несколько раз Как получить несколько каталогов поставщиков с композитором? как получить дату от Excel с помощью библиотеки PHPExcel Active Collab уведомляет пользователя при создании, закрытии или повторной открытии задачи с помощью API Googlebot Unexplained 32-символьная шестнадцатеричная добавленная строка, вызывающая более 20 000 404 ошибок в день Загрузка изображения в базу данных mysql не работает PHP Цитирование по датам отключить javascript коды, используя php? Как создать дополнительный уровень меню с помощью плагина jQuery Nestable с помощью Codeigniter? Форматирование даты mysql с помощью php

Doctrine 2 – Как добавить пользовательский драйвер DBAL?

Как я могу добавить свой собственный драйвер без изменения DriverManager.php в ядре Doctrine2?

Я создал драйвер DBAL для pdo_dblib и поместил его в пакет Symfony2. Это прекрасно работает, однако я должен добавить свой драйвер в список жестко закодированных драйверов в DriverManager.php, иначе я получаю следующее исключение:

исключение

 [Doctrine\DBAL\DBALException] The given 'driver' pdo_dblib is unknown, Doctrine currently supports only the following drivers: pdo_mysql, pdo_sqlite, pdo_pgsql, pdo_oci, oci8, ibm_db2, pdo_ibm, pdo_sqlsrv 

Если я не изменю DriverManager.php

 final class DriverManager { private static $_driverMap = array( 'pdo_dblib' => 'Doctrine\DBAL\Driver\PDODblib\Driver', // Added this line ); } 

Вот мой config.yml:

 # Doctrine Configuration doctrine: dbal: driver: pdo_dblib driver_class: PDODblibBundle\Doctrine\DBAL\Driver\PDODblib\Driver 

Фактически вы можете просто оставить опцию конфигурации драйвера окончательно.

Все, что вам нужно определить, это параметр driver_class. Драйвер используется только для внутреннего поиска для классов драйвера по умолчанию, если только вы предоставляете только класс, он не подведет поиск.

Btw: Нет способа (в полной настройке по умолчанию), чтобы определить это в параметрах.ini, вы должны изменить его непосредственно внутри config.yml

Btw: из-за другого дефекта (драйвер возвращается к mysql в определенной области), вы не можете установить кодировку в конфигурации, так как она зарегистрирует обработчик событий MySql для установки кодировки.

Таким образом, моя окончательная конфигурация доктрины, основанная на моей реализации на основе mssql_ *, выглядит следующим образом и работает без проблем:

 # Doctrine Configuration doctrine: dbal: #driver: %database_driver% driver_class: Doctrine\DBAL\Driver\MsSql\Driver host: %database_host% port: %database_port% dbname: %database_name% user: %database_user% password: %database_password% #charset: UTF8 orm: auto_generate_proxy_classes: %kernel.debug% auto_mapping: true