0
vendor/doctrine/dbal/run-all.sh
vendored
Executable file → Normal file
0
vendor/doctrine/dbal/run-all.sh
vendored
Executable file → Normal file
@@ -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.");
|
||||
|
2
vendor/doctrine/migrations
vendored
2
vendor/doctrine/migrations
vendored
Submodule vendor/doctrine/migrations updated: fe98141b1e...b86b4cc0a3
@@ -142,8 +142,12 @@ class AnnotationDriver implements Driver
|
||||
|
||||
$classAnnotations = $this->_reader->getClassAnnotations($class);
|
||||
|
||||
if ($classAnnotations && is_numeric(key($classAnnotations))) {
|
||||
foreach ($classAnnotations as $annot) {
|
||||
if ($classAnnotations) {
|
||||
foreach ($classAnnotations as $key => $annot) {
|
||||
if ( ! is_numeric($key)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$classAnnotations[get_class($annot)] = $annot;
|
||||
}
|
||||
}
|
||||
@@ -432,8 +436,11 @@ class AnnotationDriver implements Driver
|
||||
if ($method->isPublic() && $method->getDeclaringClass()->getName() == $class->name) {
|
||||
$annotations = $this->_reader->getMethodAnnotations($method);
|
||||
|
||||
if ($annotations && is_numeric(key($annotations))) {
|
||||
foreach ($annotations as $annot) {
|
||||
if ($annotations) {
|
||||
foreach ($annotations as $key => $annot) {
|
||||
if ( ! is_numeric($key)) {
|
||||
continue;
|
||||
}
|
||||
$annotations[get_class($annot)] = $annot;
|
||||
}
|
||||
}
|
||||
|
@@ -284,7 +284,7 @@ final class PersistentCollection implements Collection
|
||||
/**
|
||||
* INTERNAL: Gets the association mapping of the collection.
|
||||
*
|
||||
* @return \Doctrine\ORM\Mapping\AssociationMapping
|
||||
* @return array
|
||||
*/
|
||||
public function getMapping()
|
||||
{
|
||||
|
@@ -178,7 +178,7 @@ class ManyToManyPersister extends AbstractCollectionPersister
|
||||
}
|
||||
|
||||
// Composite identifier
|
||||
$sourceClass = $this->_em->getClassMetadata(get_class($mapping->getOwner()));
|
||||
$sourceClass = $this->_em->getClassMetadata(get_class($coll->getOwner()));
|
||||
|
||||
foreach ($mapping['relationToSourceKeyColumns'] as $relColumn => $srcColumn) {
|
||||
$params[] = $identifier[$sourceClass->fieldNames[$srcColumn]];
|
||||
|
@@ -21,7 +21,6 @@ namespace Doctrine\ORM\Proxy;
|
||||
|
||||
use Doctrine\ORM\EntityManager,
|
||||
Doctrine\ORM\Mapping\ClassMetadata,
|
||||
Doctrine\ORM\Mapping\AssociationMapping,
|
||||
Doctrine\Common\Util\ClassUtils;
|
||||
|
||||
/**
|
||||
|
@@ -21,6 +21,7 @@ namespace Doctrine\ORM;
|
||||
|
||||
use Doctrine\DBAL\LockMode,
|
||||
Doctrine\ORM\Query\Parser,
|
||||
Doctrine\ORM\Query\ParserResult,
|
||||
Doctrine\ORM\Query\QueryException;
|
||||
|
||||
/**
|
||||
@@ -218,7 +219,7 @@ final class Query extends AbstractQuery
|
||||
$hash = $this->_getQueryCacheId();
|
||||
$cached = $this->_expireQueryCache ? false : $queryCache->fetch($hash);
|
||||
|
||||
if ($cached !== false) {
|
||||
if ($cached instanceof ParserResult) {
|
||||
// Cache hit.
|
||||
$this->_parserResult = $cached;
|
||||
|
||||
|
@@ -94,7 +94,7 @@ class QueryException extends \Doctrine\ORM\ORMException
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \Doctrine\ORM\Mapping\AssociationMapping $assoc
|
||||
* @param array $assoc
|
||||
*/
|
||||
public static function iterateWithFetchJoinCollectionNotAllowed($assoc)
|
||||
{
|
||||
@@ -151,4 +151,4 @@ class QueryException extends \Doctrine\ORM\ORMException
|
||||
return new self("Cannot check if a child of '" . $rootClass . "' is instanceof '" . $className . "', " .
|
||||
"inheritance hierachy exists between these two classes.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -20,8 +20,8 @@
|
||||
namespace Doctrine\ORM\Tools;
|
||||
|
||||
use Doctrine\ORM\Mapping\ClassMetadataInfo,
|
||||
Doctrine\ORM\Mapping\AssociationMapping,
|
||||
Doctrine\Common\Util\Inflector;
|
||||
Doctrine\Common\Util\Inflector,
|
||||
Doctrine\DBAL\Types\Type;
|
||||
|
||||
/**
|
||||
* Generic class used to generate PHP5 entity classes from ClassMetadataInfo instances
|
||||
@@ -143,7 +143,7 @@ public function <methodName>(<methodTypeHint>$<variableName>)
|
||||
'/**
|
||||
* <description>
|
||||
*
|
||||
* @param <variableType$<variableName>
|
||||
* @param <variableType>$<variableName>
|
||||
*/
|
||||
public function <methodName>(<methodTypeHint>$<variableName>)
|
||||
{
|
||||
|
@@ -23,7 +23,6 @@
|
||||
namespace Doctrine\ORM\Tools\Export\Driver;
|
||||
|
||||
use Doctrine\ORM\Mapping\ClassMetadataInfo,
|
||||
Doctrine\ORM\Mapping\AssociationMapping,
|
||||
Doctrine\ORM\Tools\EntityGenerator;
|
||||
|
||||
/**
|
||||
@@ -69,4 +68,4 @@ class AnnotationExporter extends AbstractExporter
|
||||
{
|
||||
$this->_entityGenerator = $entityGenerator;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -36,7 +36,7 @@ class Version
|
||||
/**
|
||||
* Current Doctrine Version
|
||||
*/
|
||||
const VERSION = '2.2.3-DEV';
|
||||
const VERSION = '2.2.4-DEV';
|
||||
|
||||
/**
|
||||
* Compares a Doctrine version with the current one.
|
||||
|
@@ -30,12 +30,25 @@ class NavPointOfInterest
|
||||
*/
|
||||
private $country;
|
||||
|
||||
/**
|
||||
* @ManyToMany(targetEntity="NavUser", cascade={"persist"})
|
||||
* @JoinTable(name="navigation_pois_visitors",
|
||||
* inverseJoinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
|
||||
* joinColumns={
|
||||
* @JoinColumn(name="poi_long", referencedColumnName="nav_long"),
|
||||
* @JoinColumn(name="poi_lat", referencedColumnName="nav_lat")
|
||||
* }
|
||||
* )
|
||||
*/
|
||||
private $visitors;
|
||||
|
||||
public function __construct($lat, $long, $name, $country)
|
||||
{
|
||||
$this->lat = $lat;
|
||||
$this->long = $long;
|
||||
$this->name = $name;
|
||||
$this->country = $country;
|
||||
$this->visitors = new \Doctrine\Common\Collections\ArrayCollection;
|
||||
}
|
||||
|
||||
public function getLong() {
|
||||
@@ -53,4 +66,14 @@ class NavPointOfInterest
|
||||
public function getCountry() {
|
||||
return $this->country;
|
||||
}
|
||||
|
||||
public function addVisitor(NavUser $user)
|
||||
{
|
||||
$this->visitors[] = $user;
|
||||
}
|
||||
|
||||
public function getVisitors()
|
||||
{
|
||||
return $this->visitors;
|
||||
}
|
||||
}
|
||||
|
28
vendor/doctrine/orm/tests/Doctrine/Tests/Models/Navigation/NavUser.php
vendored
Normal file
28
vendor/doctrine/orm/tests/Doctrine/Tests/Models/Navigation/NavUser.php
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Doctrine\Tests\Models\Navigation;
|
||||
|
||||
/**
|
||||
* @Entity
|
||||
* @Table(name="navigation_users")
|
||||
*/
|
||||
class NavUser
|
||||
{
|
||||
/**
|
||||
* @Id
|
||||
* @Column(type="integer")
|
||||
* @generatedValue
|
||||
*/
|
||||
private $id;
|
||||
|
||||
/**
|
||||
* @column(type="string")
|
||||
*/
|
||||
private $name;
|
||||
|
||||
public function __construct($name)
|
||||
{
|
||||
$this->name = $name;
|
||||
}
|
||||
}
|
||||
|
@@ -5,6 +5,7 @@ use Doctrine\Tests\Models\Navigation\NavCountry;
|
||||
use Doctrine\Tests\Models\Navigation\NavPointOfInterest;
|
||||
use Doctrine\Tests\Models\Navigation\NavTour;
|
||||
use Doctrine\Tests\Models\Navigation\NavPhotos;
|
||||
use Doctrine\Tests\Models\Navigation\NavUser;
|
||||
|
||||
require_once __DIR__ . '/../../TestInit.php';
|
||||
|
||||
@@ -118,4 +119,26 @@ class CompositePrimaryKeyTest extends \Doctrine\Tests\OrmFunctionalTestCase
|
||||
$this->setExpectedException('Doctrine\ORM\ORMException', 'The identifier long is missing for a query of Doctrine\Tests\Models\Navigation\NavPointOfInterest');
|
||||
$poi = $this->_em->find('Doctrine\Tests\Models\Navigation\NavPointOfInterest', array('key1' => 100));
|
||||
}
|
||||
|
||||
/**
|
||||
* @group DDC-1939
|
||||
*/
|
||||
public function testDeleteCompositePersistentCollection()
|
||||
{
|
||||
$this->putGermanysBrandenburderTor();
|
||||
|
||||
$poi = $this->_em->find('Doctrine\Tests\Models\Navigation\NavPointOfInterest', array('lat' => 100, 'long' => 200));
|
||||
$poi->addVisitor(new NavUser("test1"));
|
||||
$poi->addVisitor(new NavUser("test2"));
|
||||
|
||||
$this->_em->flush();
|
||||
|
||||
$poi->getVisitors()->clear();
|
||||
|
||||
$this->_em->flush();
|
||||
$this->_em->clear();
|
||||
|
||||
$poi = $this->_em->find('Doctrine\Tests\Models\Navigation\NavPointOfInterest', array('lat' => 100, 'long' => 200));
|
||||
$this->assertEquals(0, count($poi->getVisitors()));
|
||||
}
|
||||
}
|
||||
|
@@ -88,6 +88,7 @@ abstract class OrmFunctionalTestCase extends OrmTestCase
|
||||
'Doctrine\Tests\Models\Routing\RoutingRouteBooking',
|
||||
),
|
||||
'navigation' => array(
|
||||
'Doctrine\Tests\Models\Navigation\NavUser',
|
||||
'Doctrine\Tests\Models\Navigation\NavCountry',
|
||||
'Doctrine\Tests\Models\Navigation\NavPhotos',
|
||||
'Doctrine\Tests\Models\Navigation\NavTour',
|
||||
|
Reference in New Issue
Block a user