Browse Source

[DependencyInjection] added a way to change the DBAL driver in the Doctrine extension

Fabien Potencier 15 years ago
parent
commit
b58c685508

+ 12 - 1
src/Symfony/Components/DependencyInjection/Loader/Extension/DoctrineExtension.php

@@ -49,7 +49,7 @@ class DoctrineExtension extends LoaderExtension
     $loader = new XmlFileLoader(__DIR__.'/xml/doctrine');
     $configuration->merge($loader->load('dbal-1.0.xml'));
 
-    foreach (array('dbname', 'driverClass', 'host', 'username', 'password') as $key)
+    foreach (array('dbname', 'host', 'username', 'password') as $key)
     {
       if (isset($config[$key]))
       {
@@ -57,6 +57,17 @@ class DoctrineExtension extends LoaderExtension
       }
     }
 
+    if (isset($config['driver']))
+    {
+      $class = $config['driver'];
+      if (in_array($class, array('OCI8', 'PDOMsSql', 'PDOMySql', 'PDOOracle', 'PDOPgSql', 'PDOSqlite')))
+      {
+        $class = 'Doctrine\\DBAL\\Driver\\'.$class.'\\Driver';
+      }
+
+      $configuration->setParameter('doctrine.dbal.driver.class', $class);
+    }
+
     $configuration->setAlias('connection', null !== $this->alias ? $this->alias : 'doctrine.dbal.connection');
 
     return $configuration;

+ 1 - 0
src/Symfony/Components/DependencyInjection/Loader/schema/dic/doctrine/doctrine-1.0.xsd

@@ -12,5 +12,6 @@
     <xsd:attribute name="host" type="xsd:string" />
     <xsd:attribute name="username" type="xsd:string" />
     <xsd:attribute name="password" type="xsd:string" />
+    <xsd:attribute name="driver" type="xsd:string" />
   </xsd:complexType>
 </xsd:schema>