瀏覽代碼

[DoctrineBundle] added back the possibility to easily define one DBAL connection

The reasonning reads as follows:

Most users will only ever use one database connection (and probably one entity manager for that matter).
So, this most common use case should be as easy as possible to configure.

This is BC.

Before:

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                driver:   pdo_mysql
                dbname:   Symfony2
                user:     root
                password: null

After (optional):

doctrine:
    dbal:
        driver:   pdo_mysql
        dbname:   Symfony2
        user:     root
        password: null
Fabien Potencier 14 年之前
父節點
當前提交
e63c2e2315

+ 16 - 0
src/Symfony/Bundle/DoctrineBundle/DependencyInjection/Configuration.php

@@ -58,6 +58,22 @@ class Configuration implements ConfigurationInterface
         $node
             ->children()
             ->arrayNode('dbal')
+                ->beforeNormalization()
+                    ->ifTrue(function ($v) { return is_array($v) && !array_key_exists('connections', $v) && !array_key_exists('connection', $v); })
+                    ->then(function ($v) {
+                        $connection = array();
+                        foreach (array('dbname', 'host', 'port', 'user', 'password', 'driver', 'driver_class', 'options', 'path', 'memory', 'unix_socket', 'wrapper_class', 'platform_service', 'charset', 'logging') as $key) {
+                            if (array_key_exists($key, $v)) {
+                                $connection[$key] = $v[$key];
+                                unset($v[$key]);
+                            }
+                        }
+                        $v['default_connection'] = isset($v['default_connection']) ? (string) $v['default_connection'] : 'default';
+                        $v['connections'] = array($v['default_connection'] => $connection);
+
+                        return $v;
+                    })
+                ->end()
                 ->children()
                     ->scalarNode('default_connection')->end()
                 ->end()

+ 1 - 1
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_service_single_connection.xml

@@ -7,7 +7,7 @@
                         http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd">
 
     <config>
-        <dbal default-connection="mysql">
+        <dbal>
             <connection
                 name="mysql"
                 dbname="mysql_db"

+ 4 - 7
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_service_single_connection.yml

@@ -1,9 +1,6 @@
 doctrine:
     dbal:
-        default_connection: mysql
-        connections:
-            mysql:
-                dbname: mysql_db
-                user: mysql_user
-                password: mysql_s3cr3t
-                unix_socket: /path/to/mysqld.sock
+        dbname: mysql_db
+        user: mysql_user
+        password: mysql_s3cr3t
+        unix_socket: /path/to/mysqld.sock