- An extension to Doctrine DBAL that can be used to switch between database connections in runtime with Symfony 2, contribute with this project!
If you liked of this library, give me a star =).
- The package is available on Packagist.
- The source files is PSR-2 compatible.
- Autoloading is PSR-4 compatible.
composer require cekurte/doctrinebundle
After, register the bundle in your AppKernel like this:
// app/AppKernel.php
// ...
public function registerBundles()
{
$bundles = array(
// ...
new Cekurte\DoctrineBundle\CekurteDoctrineBundle(),
// ...
);
// ...
return $bundles;
}
Well, firstly you must configure a doctrine database connection. So, add this in your config file.
# app/config/config.yml
# ...
doctrine:
dbal:
default_connection: dynamic
connections:
dynamic:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
wrapper_class: "Cekurte\DoctrineBundle\DBAL\ConnectionWrapper"
After that, when you need change the database connection you can retrieve a service id named doctrine.dbal.dynamic_connection
and call the method forceSwitch
, see the example below.
<?php
namespace YourNamespace\YourBundleBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class YourController extends Controller
{
public function indexAction()
{
// ...
// Change the current database connection...
$this
->get('doctrine.dbal.dynamic_connection')
->forceSwitch(
$dbHost,
$dbName,
$dbUser,
$dbPassword,
$dbOptions
)
;
}
}
- Give me a star =)
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Make your changes
- Run the tests, adding new ones for your own code if necessary (
vendor/bin/phpunit
) - Commit your changes (
git commit -am 'Added some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request