2011-12-13 26 views
17

nasıl Doctrine2 çekirdek DriverManager.php değiştirmeden benim özel sürücü ekleyebilir?Doctrine 2 - Özel DBAL sürücüsü nasıl eklenir?

Ben pdo_dblib için DBal Sürücü oluşturulan ve Symfony2 paket içine yerleştirdik. Ben değiştirmek sürece

İstisna

[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 

: Bu aksi takdirde şu istisna olsun, ancak ben DriverManager.php sabit kodlu sürücüleri listesinden benim sürücü eklemek gerekir, gayet iyi çalışıyor DriverManager.php

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

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

Eğer PDODblib klasörü paylaşabilirsiniz da yaptın Çekirdek değiştirmeden özel bir sürücü eklemek için bir yol bulmak için yönetmek? – Matt

+1

Ben Doctrine2 çekirdeğini değiştirmeden bir sürücü eklemek için bir yol bulmuş değil. Ancak şu adresteki Bundle'a bakabilirsiniz: http://github.com/trooney/PDODblibBundle – rooney

+0

Bu yoldan aşağıya giden herkes için: Pv_dblib sürücüsüne PHP svn lastInsertId ve işlem desteği eklenmemiş taahhütler var. Http://svn.php.net/viewvc/php/php-src/trunk/ext/pdo_dblib/dblib_driver.c?view=log (300647 ve 300647) – rooney

cevap

25

Aslında, sadece completlely dışarı sürücü yapılandırma seçeneğini bırakabilir:İşte benim config.yml bu.

Tanımlamak gereken tek şey

driver_class seçenektir. Sürücü, yalnızca sınıfı sağladığınız sürece, arama yaparken başarısız olmayacağı sürece, varsayılan sürücü sınıfları için dahili bir arama yapmak için kullanılır.

Btw: parameters.ini bu tanımlamaya (komple varsayılan kurulumunda) yolu yoktur, sen

Btw config.yml içine doğrudan değiştirmek zorunda: nedeniyle başka bozukluğun (sürücü düşen o daha karakterseti seçimi için bir MySql olay işleyicisi kaydeder olarak arka) belirli bir alan üzerinde MySQL 'e, sen konfigürasyonda charset ayarlamak olmayabilir.

Yani benim mssql_ benim son doktrin yapılandırma tabanlı * tabanlı uygulama takip ve sorunsuz çalışır gibi görünüyor: Ben lutfen bu konuda rastlamak ettik

# 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 
+1

Tam olarak aradığım şey bu! Çok teşekkürler! –

+1

MSSQL Sürücü sürüm 2.2 beri SQLSrv olarak yeniden adlandırıldı –