The goal of this bundle is to make the use of Doctrine as session handler for Symfony
$ composer require blast-project/doctrine-session-bundle
//...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = [
//...
new Blast\DoctrineSessionBundle\BlastDoctrineSessionBundle(),
];
//...
}
//...
}
Configure your Doctrine connections
# app/config/config.yml
doctrine:
dbal:
default_connection: default
connections:
default:
driver: pdo_pgsql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
session: # This will be the connection used by this bundle
driver: pdo_pgsql
host: "%database_host%" # Please adapt to your needs if you're using another database for sessions
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
orm:
default_entity_manager: default
auto_generate_proxy_classes: "%kernel.debug%"
entity_managers:
default:
connection: default
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
mappings:
# Add here your mapping for your default entities
# Example below :
BlastBaseEntitiesBundle:
type: yml
session:
connection: session
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: false # Only one entity manager can have auto_mappping set to true
mappings:
BlastDoctrineSessionBundle:
type: yml
Configure the framework session handler :
# app/config/config.yml
framework:
# [...]
session:
handler_id: blast_doctrine_handler
$ php bin/console doctrine:database:create --connection=session
Or
$ php bin/console doctrine:schema:update --force --connection=session
use Blast\DoctrineSessionBundle\Handler\DoctrineORMHandler;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
//...
$doctrinehandler = new DoctrineORMHandler(
$this->get('doctrine'),
'Blast\DoctrineSessionBundle\Entity\Session');
$storage = new NativeSessionStorage(
array(),
$doctrinehandler
);
$session = new Session($storage);
$session->start();
//...
http://symfony.com/doc/current/components/http_foundation/session_configuration.html