@@ -134,6 +134,7 @@ class Configuration implements ConfigurationInterface
|
||||
->children()
|
||||
->scalarNode('driver')->defaultValue('pdo_mysql')->end()
|
||||
->scalarNode('platform_service')->end()
|
||||
->scalarNode('schema_filter')->end()
|
||||
->booleanNode('logging')->defaultValue($this->debug)->end()
|
||||
->booleanNode('profiling')->defaultValue($this->debug)->end()
|
||||
->scalarNode('driver_class')->end()
|
||||
@@ -302,6 +303,7 @@ class Configuration implements ConfigurationInterface
|
||||
->scalarNode('class_metadata_factory_name')->defaultValue('Doctrine\ORM\Mapping\ClassMetadataFactory')->end()
|
||||
->scalarNode('default_repository_class')->defaultValue('Doctrine\ORM\EntityRepository')->end()
|
||||
->scalarNode('auto_mapping')->defaultFalse()->end()
|
||||
->scalarNode('naming_strategy')->defaultValue('doctrine.orm.naming_strategy.default')->end()
|
||||
->end()
|
||||
->fixXmlConfig('hydrator')
|
||||
->children()
|
||||
|
@@ -119,6 +119,12 @@ class DoctrineExtension extends AbstractDoctrineExtension
|
||||
}
|
||||
}
|
||||
unset($connection['profiling']);
|
||||
|
||||
if (isset($connection['schema_filter']) && $connection['schema_filter']) {
|
||||
$configuration->addMethodCall('setFilterSchemaAssetsExpression', array($connection['schema_filter']));
|
||||
}
|
||||
|
||||
unset($connection['schema_filter']);
|
||||
|
||||
if ($logger) {
|
||||
$configuration->addMethodCall('setSQLLogger', array($logger));
|
||||
@@ -282,6 +288,12 @@ class DoctrineExtension extends AbstractDoctrineExtension
|
||||
'setClassMetadataFactoryName' => $entityManager['class_metadata_factory_name'],
|
||||
'setDefaultRepositoryClassName' => $entityManager['default_repository_class'],
|
||||
);
|
||||
// check for version to keep BC
|
||||
if (version_compare(\Doctrine\ORM\Version::VERSION, "2.3.0-DEV") >= 0) {
|
||||
$methods = array_merge($methods, array(
|
||||
'setNamingStrategy' => new Reference($entityManager['naming_strategy']),
|
||||
));
|
||||
}
|
||||
foreach ($methods as $method => $arg) {
|
||||
$ormConfigDef->addMethodCall($method, array($arg));
|
||||
}
|
||||
|
@@ -45,6 +45,10 @@
|
||||
|
||||
<!-- listeners -->
|
||||
<parameter key="doctrine.orm.listeners.resolve_target_entity.class">Doctrine\ORM\Tools\ResolveTargetEntityListener</parameter>
|
||||
|
||||
<!-- naming strategy -->
|
||||
<parameter key="doctrine.orm.naming_strategy.default.class">Doctrine\ORM\Mapping\DefaultNamingStrategy</parameter>
|
||||
<parameter key="doctrine.orm.naming_strategy.underscore.class">Doctrine\ORM\Mapping\UnderscoreNamingStrategy</parameter>
|
||||
</parameters>
|
||||
|
||||
<services>
|
||||
@@ -93,5 +97,9 @@
|
||||
|
||||
<!-- listeners -->
|
||||
<service id="doctrine.orm.listeners.resolve_target_entity" class="%doctrine.orm.listeners.resolve_target_entity.class%" public="false" />
|
||||
|
||||
<!-- naming strategy -->
|
||||
<service id="doctrine.orm.naming_strategy.default" class="%doctrine.orm.naming_strategy.default.class%" public="false" />
|
||||
<service id="doctrine.orm.naming_strategy.underscore" class="%doctrine.orm.naming_strategy.underscore.class%" public="false" />
|
||||
</services>
|
||||
</container>
|
||||
|
@@ -19,6 +19,7 @@
|
||||
<xsd:attribute name="driver-class" type="xsd:string" />
|
||||
<xsd:attribute name="wrapper-class" type="xsd:string" />
|
||||
<xsd:attribute name="platform-service" type="xsd:string" />
|
||||
<xsd:attribute name="schema-filter" type="xsd:string" />
|
||||
<xsd:attribute name="logging" type="xsd:string" default="false" />
|
||||
<xsd:attribute name="profiling" type="xsd:string" default="false" />
|
||||
<xsd:attributeGroup ref="driver-config" />
|
||||
@@ -161,6 +162,7 @@
|
||||
<xsd:attribute name="result-cache-driver" type="xsd:string" />
|
||||
<xsd:attribute name="metadata-cache-driver" type="xsd:string" />
|
||||
<xsd:attribute name="query-cache-driver" type="xsd:string" />
|
||||
<xsd:attribute name="naming-strategy" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="filter">
|
||||
|
@@ -30,6 +30,7 @@ Configuration Reference
|
||||
charset: UTF8
|
||||
logging: %kernel.debug%
|
||||
platform_service: MyOwnDatabasePlatformService
|
||||
schema_filter: ^sf2_
|
||||
mapping_types:
|
||||
enum: string
|
||||
conn1:
|
||||
@@ -64,6 +65,7 @@ Configuration Reference
|
||||
test_numeric: Acme\HelloBundle\DQL\NumericFunction
|
||||
datetime_functions:
|
||||
test_datetime: Acme\HelloBundle\DQL\DatetimeFunction
|
||||
naming_strategy: doctrine.orm.naming_strategy.default # Service Reference
|
||||
em2:
|
||||
# ...
|
||||
|
||||
@@ -93,6 +95,7 @@ Configuration Reference
|
||||
charset="UTF8"
|
||||
logging="%kernel.debug%"
|
||||
platform-service="MyOwnDatabasePlatformService"
|
||||
schema-filter="^sf2_"
|
||||
>
|
||||
<doctrine:option key="foo">bar</doctrine:option>
|
||||
<doctrine:mapping-type name="enum">string</doctrine:mapping-type>
|
||||
@@ -102,7 +105,7 @@ Configuration Reference
|
||||
</doctrine:dbal>
|
||||
|
||||
<doctrine:orm default-entity-manager="default" auto-generate-proxy-classes="false" proxy-namespace="Proxies" proxy-dir="%kernel.cache_dir%/doctrine/orm/Proxies">
|
||||
<doctrine:entity-manager name="default" query-cache-driver="array" result-cache-driver="array" connection="conn1" class-metadata-factory-name="Doctrine\ORM\Mapping\ClassMetadataFactory">
|
||||
<doctrine:entity-manager name="default" query-cache-driver="array" result-cache-driver="array" connection="conn1" class-metadata-factory-name="Doctrine\ORM\Mapping\ClassMetadataFactory" naming-strategy="doctrine.orm.naming_strategy.default">
|
||||
<doctrine:metadata-cache-driver type="memcache" host="localhost" port="11211" instance-class="Memcache" class="Doctrine\Common\Cache\MemcacheCache" />
|
||||
<doctrine:mapping name="AcmeHelloBundle" />
|
||||
<doctrine:dql>
|
||||
@@ -241,6 +244,7 @@ can configure. The following block shows all possible configuration keys:
|
||||
charset: UTF8
|
||||
logging: %kernel.debug%
|
||||
platform_service: MyOwnDatabasePlatformService
|
||||
schema_filter: ^sf2_
|
||||
mapping_types:
|
||||
enum: string
|
||||
types:
|
||||
@@ -268,6 +272,7 @@ can configure. The following block shows all possible configuration keys:
|
||||
charset="UTF8"
|
||||
logging="%kernel.debug%"
|
||||
platform-service="MyOwnDatabasePlatformService"
|
||||
schema-filter="^sf2_"
|
||||
>
|
||||
<doctrine:option key="foo">bar</doctrine:option>
|
||||
<doctrine:mapping-type name="enum">string</doctrine:mapping-type>
|
||||
|
@@ -3,7 +3,7 @@
|
||||
{% block toolbar %}
|
||||
{% set icon %}
|
||||
<img width="20" height="28" alt="Database" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAcCAYAAABh2p9gAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQRJREFUeNpi/P//PwM1ARMDlcGogZQDlpMnT7pxc3NbA9nhQKxOpL5rQLwJiPeBsI6Ozl+YBOOOHTv+AOllQNwtLS39F2owKYZ/gRq8G4i3ggxEToggWzvc3d2Pk+1lNL4fFAs6ODi8JzdS7mMRVyDVoAMHDsANdAPiOCC+jCQvQKqBQB/BDbwBxK5AHA3E/kB8nKJkA8TMQBwLxaBIKQbi70AvTADSBiSadwFXpCikpKQU8PDwkGTaly9fHFigkaKIJid4584dkiMFFI6jkTJII0WVmpHCAixZQEXWYhDeuXMnyLsVlEQKI45qFBQZ8eRECi4DBaAlDqle/8A48ip6gAADANdQY88Uc0oGAAAAAElFTkSuQmCC"/>
|
||||
<span class="sf-toolbar-status">{{ collector.querycount }}</span>
|
||||
<span class="sf-toolbar-status{% if 50 < collector.querycount %} sf-toolbar-status-yellow{% endif %}">{{ collector.querycount }}</span>
|
||||
<span class="sf-toolbar-info-piece-additional-detail">in {{ '%0.2f'|format(collector.time * 1000) }} ms</span>
|
||||
{% endset %}
|
||||
{% set text %}
|
||||
|
@@ -194,6 +194,10 @@ abstract class AbstractDoctrineExtensionTest extends \PHPUnit_Framework_TestCase
|
||||
$this->assertEquals('doctrine.orm.default_query_cache', (string) $calls[2][1][0]);
|
||||
$this->assertEquals('doctrine.orm.default_result_cache', (string) $calls[3][1][0]);
|
||||
|
||||
if (version_compare(\Doctrine\ORM\Version::VERSION, "2.3.0-DEV") >= 0) {
|
||||
$this->assertEquals('doctrine.orm.naming_strategy.default', (string) $calls[10][1][0]);
|
||||
}
|
||||
|
||||
$definition = $container->getDefinition('doctrine.orm.default_metadata_cache');
|
||||
$this->assertEquals('%doctrine.orm.cache.array.class%', $definition->getClass());
|
||||
|
||||
@@ -701,6 +705,25 @@ abstract class AbstractDoctrineExtensionTest extends \PHPUnit_Framework_TestCase
|
||||
$this->assertDICDefinitionMethodCallOnce($definition, 'addCustomDatetimeFunction', array('test_datetime', 'Symfony\Bundle\DoctrineBundle\Tests\DependencyInjection\TestDatetimeFunction'));
|
||||
}
|
||||
|
||||
public function testSetNamingStrategy()
|
||||
{
|
||||
if (version_compare(\Doctrine\ORM\Version::VERSION, "2.3.0-DEV") < 0) {
|
||||
$this->markTestSkipped('Naming Strategies are not available');
|
||||
}
|
||||
$container = $this->getContainer(array('YamlBundle'));
|
||||
|
||||
$loader = new DoctrineExtension();
|
||||
$container->registerExtension($loader);
|
||||
$this->loadFromFile($container, 'orm_namingstrategy');
|
||||
$this->compileContainer($container);
|
||||
|
||||
$def1 = $container->getDefinition('doctrine.orm.em1_configuration');
|
||||
$def2 = $container->getDefinition('doctrine.orm.em2_configuration');
|
||||
|
||||
$this->assertDICDefinitionMethodCallOnce($def1, 'setNamingStrategy', array(0 => new Reference('doctrine.orm.naming_strategy.default')));
|
||||
$this->assertDICDefinitionMethodCallOnce($def2, 'setNamingStrategy', array(0 => new Reference('doctrine.orm.naming_strategy.underscore')));
|
||||
}
|
||||
|
||||
public function testSingleEMSetCustomFunctions()
|
||||
{
|
||||
$container = $this->getContainer(array('YamlBundle'));
|
||||
@@ -763,6 +786,20 @@ abstract class AbstractDoctrineExtensionTest extends \PHPUnit_Framework_TestCase
|
||||
$this->assertDICDefinitionMethodCallOnce($definition, 'addResolveTargetEntity', array('Symfony\Component\Security\Core\User\UserInterface', 'MyUserClass', array()));
|
||||
$this->assertEquals(array('doctrine.event_listener' => array( array('event' => 'loadClassMetadata') ) ), $definition->getTags());
|
||||
}
|
||||
|
||||
public function testDbalSchemaFilter()
|
||||
{
|
||||
$container = $this->getContainer();
|
||||
$loader = new DoctrineExtension();
|
||||
$container->registerExtension($loader);
|
||||
|
||||
$this->loadFromFile($container, 'dbal_schema_filter');
|
||||
|
||||
$this->compileContainer($container);
|
||||
|
||||
$definition = $container->getDefinition('doctrine.dbal.default_connection.configuration');
|
||||
$this->assertDICDefinitionMethodCallOnce($definition, 'setFilterSchemaAssetsExpression', array('^sf2_'));
|
||||
}
|
||||
|
||||
protected function getContainer($bundles = 'YamlBundle', $vendor = null)
|
||||
{
|
||||
|
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" ?>
|
||||
|
||||
<srv:container xmlns="http://symfony.com/schema/dic/doctrine"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:srv="http://symfony.com/schema/dic/services"
|
||||
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
|
||||
http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd">
|
||||
|
||||
<config>
|
||||
<dbal schema-filter="^sf2_" />
|
||||
</config>
|
||||
</srv:container>
|
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" ?>
|
||||
|
||||
<srv:container xmlns="http://symfony.com/schema/dic/doctrine"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:srv="http://symfony.com/schema/dic/services"
|
||||
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
|
||||
http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd">
|
||||
|
||||
<config>
|
||||
<dbal default-connection="default">
|
||||
<connection name="default" dbname="db" />
|
||||
</dbal>
|
||||
|
||||
<orm default-entity-manager="em1">
|
||||
<entity-manager name="em1" naming-strategy="doctrine.orm.naming_strategy.default">
|
||||
<mapping name="YamlBundle" />
|
||||
</entity-manager>
|
||||
<entity-manager name="em2" naming-strategy="doctrine.orm.naming_strategy.underscore">
|
||||
<mapping name="YamlBundle" />
|
||||
</entity-manager>
|
||||
</orm>
|
||||
</config>
|
||||
</srv:container>
|
@@ -0,0 +1,3 @@
|
||||
doctrine:
|
||||
dbal:
|
||||
schema_filter: ^sf2_
|
@@ -0,0 +1,18 @@
|
||||
doctrine:
|
||||
dbal:
|
||||
default_connection: default
|
||||
connections:
|
||||
default:
|
||||
dbname: db
|
||||
|
||||
orm:
|
||||
default_entity_manager: em1
|
||||
entity_managers:
|
||||
em1:
|
||||
mappings:
|
||||
YamlBundle: ~
|
||||
naming_strategy: doctrine.orm.naming_strategy.default
|
||||
em2:
|
||||
mappings:
|
||||
YamlBundle: ~
|
||||
naming_strategy: doctrine.orm.naming_strategy.underscore
|
@@ -38,23 +38,28 @@ class XMLSchemaTest extends \PHPUnit_Framework_TestCase
|
||||
$dom = new \DOMDocument('1.0', 'UTF-8');
|
||||
$dom->load($file);
|
||||
|
||||
$xmlns = "http://symfony.com/schema/dic/doctrine";
|
||||
|
||||
$dbalElements = $dom->getElementsByTagNameNS("http://symfony.com/schema/dic/doctrine", "config");
|
||||
$dbalElements = $dom->getElementsByTagNameNS($xmlns, 'dbal');
|
||||
if ($dbalElements->length) {
|
||||
$dbalDom = new \DOMDocument('1.0', 'UTF-8');
|
||||
$dbalNode = $dbalDom->importNode($dbalElements->item(0));
|
||||
$dbalDom->appendChild($dbalNode);
|
||||
$configNode = $dbalDom->createElementNS($xmlns, 'config');
|
||||
$configNode->appendChild($dbalNode);
|
||||
$dbalDom->appendChild($configNode);
|
||||
|
||||
$ret = $dbalDom->schemaValidate(__DIR__."/../../Resources/config/schema/doctrine-1.0.xsd");
|
||||
$this->assertTrue($ret, "DoctrineBundle Dependency Injection XMLSchema did not validate this XML instance.");
|
||||
$found = true;
|
||||
}
|
||||
|
||||
$ormElements = $dom->getElementsByTagNameNS("http://symfony.com/schema/dic/doctrine", "config");
|
||||
$ormElements = $dom->getElementsByTagNameNS($xmlns, 'orm');
|
||||
if ($ormElements->length) {
|
||||
$ormDom = new \DOMDocument('1.0', 'UTF-8');
|
||||
$ormNode = $ormDom->importNode($ormElements->item(0));
|
||||
$ormDom->appendChild($ormNode);
|
||||
$configNode = $ormDom->createElementNS($xmlns, 'config');
|
||||
$configNode->appendChild($ormNode);
|
||||
$ormDom->appendChild($configNode);
|
||||
|
||||
$ret = $ormDom->schemaValidate(__DIR__."/../../Resources/config/schema/doctrine-1.0.xsd");
|
||||
$this->assertTrue($ret, "DoctrineBundle Dependency Injection XMLSchema did not validate this XML instance.");
|
||||
|
Reference in New Issue
Block a user