Since: 1.0
Author: Jonathan H. Wage (jonwage@gmail.com)
Author: Roman Borschel (roman@code-factory.org)
Inheritance: extends Doctrine\ODM\MongoDB\Mapping\Driver\AbstractFileDriver
Exemplo n.º 1
0
 public function testCreateYmlDriver()
 {
     $xmlDriver = new YamlDriver(__DIR__ . '/fixtures/yaml');
     $classMetadata = new ClassMetadata('TestDocuments\\User');
     $xmlDriver->loadMetadataForClass('TestDocuments\\User', $classMetadata);
     $this->assertEquals(array('fieldName' => 'id', 'id' => true, 'name' => 'id', 'type' => 'string', 'isCascadeDetach' => '', 'isCascadeMerge' => '', 'isCascadePersist' => '', 'isCascadeRefresh' => '', 'isCascadeRemove' => ''), $classMetadata->fieldMappings['id']);
     $this->assertEquals(array('fieldName' => 'username', 'name' => 'username', 'type' => 'string', 'isCascadeDetach' => '', 'isCascadeMerge' => '', 'isCascadePersist' => '', 'isCascadeRefresh' => '', 'isCascadeRemove' => ''), $classMetadata->fieldMappings['username']);
     $this->assertEquals(array('fieldName' => 'createdAt', 'name' => 'createdAt', 'type' => 'date', 'isCascadeDetach' => '', 'isCascadeMerge' => '', 'isCascadePersist' => '', 'isCascadeRefresh' => '', 'isCascadeRemove' => ''), $classMetadata->fieldMappings['createdAt']);
     $this->assertEquals(array('fieldName' => 'address', 'name' => 'address', 'type' => 'one', 'embedded' => true, 'targetDocument' => 'Documents\\Address', 'isCascadeDetach' => '', 'isCascadeMerge' => '', 'isCascadePersist' => '', 'isCascadeRefresh' => '', 'isCascadeRemove' => ''), $classMetadata->fieldMappings['address']);
     $this->assertEquals(array('fieldName' => 'phonenumbers', 'name' => 'phonenumbers', 'type' => 'many', 'embedded' => true, 'targetDocument' => 'Documents\\Phonenumber', 'isCascadeDetach' => '', 'isCascadeMerge' => '', 'isCascadePersist' => '', 'isCascadeRefresh' => '', 'isCascadeRemove' => ''), $classMetadata->fieldMappings['phonenumbers']);
     $this->assertEquals(array('cascade' => 'all', 'fieldName' => 'profile', 'name' => 'profile', 'type' => 'one', 'reference' => true, 'targetDocument' => 'Documents\\Profile', 'isCascadeDetach' => true, 'isCascadeMerge' => true, 'isCascadePersist' => true, 'isCascadeRefresh' => true, 'isCascadeRemove' => true), $classMetadata->fieldMappings['profile']);
     $this->assertEquals(array('cascade' => 'all', 'fieldName' => 'account', 'name' => 'account', 'type' => 'one', 'reference' => true, 'targetDocument' => 'Documents\\Account', 'isCascadeDetach' => true, 'isCascadeMerge' => true, 'isCascadePersist' => true, 'isCascadeRefresh' => true, 'isCascadeRemove' => true), $classMetadata->fieldMappings['account']);
     $this->assertEquals(array('cascade' => 'all', 'fieldName' => 'groups', 'name' => 'groups', 'type' => 'many', 'reference' => true, 'targetDocument' => 'Documents\\Group', 'isCascadeDetach' => true, 'isCascadeMerge' => true, 'isCascadePersist' => true, 'isCascadeRefresh' => true, 'isCascadeRemove' => true), $classMetadata->fieldMappings['groups']);
 }
Exemplo n.º 2
0
 public function testFieldLevelIndexSyntaxWithBooleanValues()
 {
     $className = __NAMESPACE__ . '\\AbstractMappingDriverAlternateUser';
     $mappingDriver = new YamlDriver(__DIR__ . DIRECTORY_SEPARATOR . 'yaml');
     $class = new ClassMetadata($className);
     $mappingDriver->loadMetadataForClass($className, $class);
     $this->assertEquals(1, $class->indexes[0]['keys']['username']);
     $this->assertTrue($class->indexes[0]['options']['unique']);
     $this->assertFalse(isset($class->indexes[0]['options']['sparse']));
     $this->assertEquals(1, $class->indexes[1]['keys']['firstName']);
     $this->assertFalse(isset($class->indexes[1]['options']['unique']));
     $this->assertFalse(isset($class->indexes[1]['options']['sparse']));
     $this->assertEquals(1, $class->indexes[2]['keys']['middleName']);
     $this->assertFalse(isset($class->indexes[2]['options']['unique']));
     $this->assertTrue($class->indexes[2]['options']['sparse']);
 }
 public function loadDoctrineMongoDBConfiguration(Application $app)
 {
     $app['doctrine.odm.mongodb.configuration'] = $app->share(function () use($app) {
         $config = new Configuration();
         if ($app['doctrine.odm.mongodb.metadata_cache'] == 'apc') {
             $cache = new ApcCache();
         } else {
             $cache = new ArrayCache();
         }
         $config->setMetadataCacheImpl($cache);
         if (isset($app['doctrine.odm.mongodb.connection_options']['database'])) {
             $config->setDefaultDB($app['doctrine.odm.mongodb.connection_options']['database']);
         }
         $chain = new DriverChain();
         foreach ((array) $app['doctrine.odm.mongodb.documents'] as $document) {
             switch ($document['type']) {
                 case 'annotation':
                     $reader = new AnnotationReader();
                     $driver = new AnnotationDriver($reader, (array) $document['path']);
                     $chain->addDriver($driver, $document['namespace']);
                     break;
                 case 'yml':
                     $driver = new YamlDriver((array) $document['path']);
                     $driver->setFileExtension('.yml');
                     $chain->addDriver($driver, $document['namespace']);
                     break;
                 case 'xml':
                     $driver = new XmlDriver((array) $document['path'], $document['namespace']);
                     $driver->setFileExtension('.xml');
                     $chain->addDriver($driver, $document['namespace']);
                     break;
                 default:
                     throw new \InvalidArgumentException(sprintf('"%s" is not a recognized driver', $document['type']));
                     break;
             }
         }
         $config->setMetadataDriverImpl($chain);
         $config->setProxyDir($app['doctrine.odm.mongodb.proxies_dir']);
         $config->setProxyNamespace($app['doctrine.odm.mongodb.proxies_namespace']);
         $config->setAutoGenerateProxyClasses($app['doctrine.odm.mongodb.auto_generate_proxies']);
         $config->setHydratorDir($app['doctrine.odm.mongodb.hydrators_dir']);
         $config->setHydratorNamespace($app['doctrine.odm.mongodb.hydrators_namespace']);
         return $config;
     });
 }
 public function getElement($className)
 {
     if (null === $this->classCache) {
         $this->initialize();
     }
     if (!isset($this->classCache[$className])) {
         $this->classCache[$className] = parent::getElement($className);
     }
     return $this->classCache[$className];
 }
Exemplo n.º 5
0
 /**
  * {@inheritDoc}
  */
 public function __construct($prefixes, $fileExtension = self::DEFAULT_FILE_EXTENSION)
 {
     $locator = new SymfonyFileLocator((array) $prefixes, $fileExtension);
     parent::__construct($locator, $fileExtension);
 }