Add Doctrine EntityManager configuration
[MAILPOET-2014]
This commit is contained in:
@ -92,10 +92,17 @@ class ContainerConfigurator implements IContainerConfigurator {
|
||||
->setPublic(true)
|
||||
->setFactory([new Reference(\MailPoet\Config\RendererFactory::class), 'getRenderer']);
|
||||
// Doctrine
|
||||
$container->autowire(\MailPoet\Doctrine\ConfigurationFactory::class);
|
||||
$container->autowire(\MailPoet\Doctrine\ConnectionFactory::class);
|
||||
$container->autowire(\MailPoet\Doctrine\EntityManagerFactory::class);
|
||||
$container->autowire(\MailPoetVendor\Doctrine\ORM\Configuration::class)
|
||||
->setFactory([new Reference(\MailPoet\Doctrine\ConfigurationFactory::class), 'createConfiguration']);
|
||||
$container->autowire(\MailPoetVendor\Doctrine\DBAL\Connection::class)
|
||||
->setFactory([new Reference(\MailPoet\Doctrine\ConnectionFactory::class), 'createConnection'])
|
||||
->setPublic(true);
|
||||
$container->autowire(\MailPoetVendor\Doctrine\ORM\EntityManager::class)
|
||||
->setFactory([new Reference(\MailPoet\Doctrine\EntityManagerFactory::class), 'createEntityManager'])
|
||||
->setPublic(true);
|
||||
// Cron
|
||||
$container->autowire(\MailPoet\Cron\Daemon::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Cron\DaemonHttpRunner::class)->setPublic(true);
|
||||
|
28
lib/Doctrine/ConfigurationFactory.php
Normal file
28
lib/Doctrine/ConfigurationFactory.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace MailPoet\Doctrine;
|
||||
|
||||
use MailPoetVendor\Doctrine\ORM\Configuration;
|
||||
use MailPoetVendor\Doctrine\ORM\Mapping\UnderscoreNamingStrategy;
|
||||
|
||||
class ConfigurationFactory {
|
||||
const ENTITY_DIR = __DIR__ . '/../Doctrine/Entities';
|
||||
|
||||
/** @var bool */
|
||||
private $is_dev_mode;
|
||||
|
||||
function __construct() {
|
||||
$this->is_dev_mode = WP_DEBUG;
|
||||
}
|
||||
|
||||
function createConfiguration() {
|
||||
$configuration = new Configuration();
|
||||
$configuration->setNamingStrategy(new UnderscoreNamingStrategy());
|
||||
$configuration->setMetadataDriverImpl($configuration->newDefaultAnnotationDriver([self::ENTITY_DIR]));
|
||||
|
||||
if (!$this->is_dev_mode) {
|
||||
$configuration->ensureProductionSettings();
|
||||
}
|
||||
return $configuration;
|
||||
}
|
||||
}
|
25
lib/Doctrine/EntityManagerFactory.php
Normal file
25
lib/Doctrine/EntityManagerFactory.php
Normal file
@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace MailPoet\Doctrine;
|
||||
|
||||
use MailPoetVendor\Doctrine\DBAL\Connection;
|
||||
use MailPoetVendor\Doctrine\ORM\Configuration;
|
||||
use MailPoetVendor\Doctrine\ORM\EntityManager;
|
||||
|
||||
class EntityManagerFactory {
|
||||
|
||||
/** @var Connection */
|
||||
private $connection;
|
||||
|
||||
/** @var Configuration */
|
||||
private $configuration;
|
||||
|
||||
function __construct(Connection $connection, Configuration $configuration) {
|
||||
$this->connection = $connection;
|
||||
$this->configuration = $configuration;
|
||||
}
|
||||
|
||||
function createEntityManager() {
|
||||
return EntityManager::create($this->connection, $this->configuration);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user