Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 3.4 BETA 4中缺少元数据驱动程序_Symfony_Doctrine Orm - Fatal编程技术网

Symfony 3.4 BETA 4中缺少元数据驱动程序

Symfony 3.4 BETA 4中缺少元数据驱动程序,symfony,doctrine-orm,Symfony,Doctrine Orm,将我的项目从Symfony 3.4.0 BETA 2升级到3.4.0 BETA 4后,我在每个请求和每个cli命令中都会遇到以下错误: [Doctrine\ORM\ORMException] It's a requirement to specify a Metadata Driver and pass it to Doctrine\ORM\Configuration::setMetadataDriverImpl(). Exception trace: Doctrine\ORM\ORMExce

将我的项目从Symfony 3.4.0 BETA 2升级到3.4.0 BETA 4后,我在每个请求和每个cli命令中都会遇到以下错误:

[Doctrine\ORM\ORMException]
It's a requirement to specify a Metadata Driver and pass it to Doctrine\ORM\Configuration::setMetadataDriverImpl().

Exception trace:
Doctrine\ORM\ORMException::missingMappingDriverImpl() at D:\jinya-gallery-cms\vendor\doctrine\orm\lib\Doctrine\ORM\EntityManager.php:830
Doctrine\ORM\EntityManager::create() at D:\jinya-gallery-cms\var\cache\dev\Container3xxrjsx\appDevDebugProjectContainer.php:952
Container3xxrjsx\appDevDebugProjectContainer->getDoctrine_Orm_DefaultEntityManagerService() at D:\jinya-gallery-cms\var\cache\dev\Container3xxrjsx\appDevDebugProjectContainer.php:2164
Container3xxrjsx\appDevDebugProjectContainer->getJinyaGallery_Monolog_MySqlHandlerService() at D:\jinya-gallery-cms\var\cache\dev\Container3xxrjsx\appDevDebugProjectContainer.php:2299
Container3xxrjsx\appDevDebugProjectContainer->getMonolog_Logger_CacheService() at D:\jinya-gallery-cms\var\cache\dev\Container3xxrjsx\appDevDebugProjectContainer.php:1508
Container3xxrjsx\appDevDebugProjectContainer->getCache_AnnotationsService() at D:\jinya-gallery-cms\var\cache\dev\Container3xxrjsx\appDevDebugProjectContainer.php:1409
Container3xxrjsx\appDevDebugProjectContainer->getAnnotationReaderService() at D:\jinya-gallery-cms\var\cache\dev\Container3xxrjsx\appDevDebugProjectContainer.php:940
Container3xxrjsx\appDevDebugProjectContainer->getDoctrine_Orm_DefaultEntityManagerService() at D:\jinya-gallery-cms\var\cache\dev\Container3xxrjsx\appDevDebugProjectContainer.php:2164
Container3xxrjsx\appDevDebugProjectContainer->getJinyaGallery_Monolog_MySqlHandlerService() at D:\jinya-gallery-cms\var\cache\dev\Container3xxrjsx\appDevDebugProjectContainer.php:2330
Container3xxrjsx\appDevDebugProjectContainer->getMonolog_Logger_EventService() at D:\jinya-gallery-cms\var\cache\dev\Container3xxrjsx\appDevDebugProjectContainer.php:1703
Container3xxrjsx\appDevDebugProjectContainer->getDebug_EventDispatcherService() at D:\jinya-gallery-cms\vendor\symfony\symfony\src\Symfony\Component\DependencyInjection\Container.php:299
Symfony\Component\DependencyInjection\Container->get() at D:\jinya-gallery-cms\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Console\Application.php:65
Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at D:\jinya-gallery-cms\vendor\symfony\symfony\src\Symfony\Component\Console\Application.php:129
Symfony\Component\Console\Application->run() at D:\jinya-gallery-cms\bin\console:27
检查生成的缓存代码后,我发现实例化
EntityManager
的代码与BETA 2中的代码完全不同

这是BETA 2的代码:

<?php

use Symfony\Component\DependencyInjection\Argument\RewindableGenerator;

// This file has been auto-generated by the Symfony Dependency Injection Component for internal use.
// Returns the public 'doctrine.orm.default_entity_manager' shared service.

$a = ${($_ = isset($this->services['annotation_reader']) ? $this->services['annotation_reader'] : $this->load(__DIR__.'/getAnnotationReaderService.php')) && false ?: '_'};

$b = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($a, array(0 => 'D:\\jinya-gallery-cms\\src\\HelperBundle\\Entity', 1 => 'D:\\jinya-gallery-cms\\src\\DataBundle\\Entity'));

$c = new \Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain();
$c->addDriver($b, 'HelperBundle\\Entity');
$c->addDriver($b, 'DataBundle\\Entity');
$c->addDriver(new \Doctrine\ORM\Mapping\Driver\XmlDriver(new \Doctrine\Common\Persistence\Mapping\Driver\SymfonyFileLocator(array('D:\\jinya-gallery-cms\\vendor\\friendsofsymfony\\user-bundle\\Resources\\config\\doctrine-mapping' => 'FOS\\UserBundle\\Model'), '.orm.xml')), 'FOS\\UserBundle\\Model');

$d = new \Doctrine\ORM\Configuration();
$d->setEntityNamespaces(array('HelperBundle' => 'HelperBundle\\Entity', 'DataBundle' => 'DataBundle\\Entity'));
$d->setMetadataCacheImpl(${($_ = isset($this->services['doctrine_cache.providers.doctrine.orm.default_metadata_cache']) ? $this->services['doctrine_cache.providers.doctrine.orm.default_metadata_cache'] : $this->load(__DIR__.'/getDoctrineCache_Providers_Doctrine_Orm_DefaultMetadataCacheService.php')) && false ?: '_'});
$d->setQueryCacheImpl(${($_ = isset($this->services['doctrine_cache.providers.doctrine.orm.default_query_cache']) ? $this->services['doctrine_cache.providers.doctrine.orm.default_query_cache'] : $this->load(__DIR__.'/getDoctrineCache_Providers_Doctrine_Orm_DefaultQueryCacheService.php')) && false ?: '_'});
$d->setResultCacheImpl(${($_ = isset($this->services['doctrine_cache.providers.doctrine.orm.default_result_cache']) ? $this->services['doctrine_cache.providers.doctrine.orm.default_result_cache'] : $this->load(__DIR__.'/getDoctrineCache_Providers_Doctrine_Orm_DefaultResultCacheService.php')) && false ?: '_'});
$d->setMetadataDriverImpl($c);
$d->setProxyDir(($this->targetDirs[0].'/doctrine/orm/Proxies'));
$d->setProxyNamespace('Proxies');
$d->setAutoGenerateProxyClasses(true);
$d->setClassMetadataFactoryName('Doctrine\\ORM\\Mapping\\ClassMetadataFactory');
$d->setDefaultRepositoryClassName('Doctrine\\ORM\\EntityRepository');
$d->setNamingStrategy(new \Doctrine\ORM\Mapping\UnderscoreNamingStrategy());
$d->setQuoteStrategy(new \Doctrine\ORM\Mapping\DefaultQuoteStrategy());
$d->setEntityListenerResolver(${($_ = isset($this->services['doctrine.orm.default_entity_listener_resolver']) ? $this->services['doctrine.orm.default_entity_listener_resolver'] : $this->load(__DIR__.'/getDoctrine_Orm_DefaultEntityListenerResolverService.php')) && false ?: '_'});

$this->services['doctrine.orm.default_entity_manager'] = $instance = \Doctrine\ORM\EntityManager::create(${($_ = isset($this->services['doctrine.dbal.default_connection']) ? $this->services['doctrine.dbal.default_connection'] : $this->load(__DIR__.'/getDoctrine_Dbal_DefaultConnectionService.php')) && false ?: '_'}, $d);

${($_ = isset($this->services['doctrine.orm.default_manager_configurator']) ? $this->services['doctrine.orm.default_manager_configurator'] : $this->services['doctrine.orm.default_manager_configurator'] = new \Doctrine\Bundle\DoctrineBundle\ManagerConfigurator(array(), array())) && false ?: '_'}->configure($instance);

return $instance;
'FOS\\UserBundle\\Model')、'.orm.xml')、'FOS\\UserBundle\\Model');
$d=new\Doctrine\ORM\Configuration();
$d->setEntityNamespaces(数组('HelperBundle'=>'HelperBundle\\Entity','DataBundle'=>'DataBundle\\Entity');
$d->setMetadataCacheImpl(${($\=isset($this->services['doctor\u cache.providers.doctor.orm.default\u metadata\u cache'])?$this->services['doctor\u cache.providers.doctor.orm.default\u metadatacache.doctor.orm.default\u metadatacache']:$this->load(\uu DIR\uu.'./getDoctrineCache\u providers\u orm\u DefaultMetadataCacheService.php'))&&false:';
$d->setQueryCacheImpl(${($\=isset($this->services['doctor\u cache.providers.doctor.orm.default\u query\u cache'])?$this->services['doctor\u cache.providers.doctor.orm.default\u query\u cache']:$this->load('DIR\uuuu.'./getDoctrineCache\u providers\u doctor\u orm\u defaultquerycache.php'))&&false?:';
$d->setResultCacheImpl(${($\=isset($this->services['doctor\u cache.providers.doctor.orm.default\u result\u cache'])?$this->services['doctor\u cache.providers.doctor.orm.default\u result\u cache.doctor.orm.default\u cache']:$this->load(\uu DIR\uuu.'./getDoctrineCache\u providers\u orm\u defaultresult\u result\u cache.php'))&&false?:';
$d->setMetadataDriverImpl($c);
$d->setProxyDir(($this->targetDirs[0]./doctrine/orm/Proxies');
$d->setProxyNamespace(“代理”);
$d->setAutoGenerateProxy类(true);
$d->setClassMetadataFactoryName('Doctrine\\ORM\\Mapping\\ClassMetadataFactory');
$d->setDefaultRepositoryClassName('Doctrine\\ORM\\EntityRepository');
$d->setNamingStrategy(new\Doctrine\ORM\Mapping\下划线namingstrategy());
$d->setQuoteStrategy(new\Doctrine\ORM\Mapping\DefaultQuoteStrategy());
$d->setEntityListenerResolver(${($\=isset($this->services['doctrine.orm.default\u entity\u listener\u resolver'])?$this->services['doctrine.orm.default\u entity\u listener\u resolver']:$this->load($DIR\uuu.'/getDoctrine\u orm\u defaultentityListenerResolver.php'))和&false?:'''''u'});
$this->services['doctrine.orm.default\u entity\u manager']=$instance=\doctrine\orm\EntityManager::create(${($\=isset($this->services['doctrine.dbal.default\u connection'])?$this->services['doctrine.dbal.default\u connection']:$this->this->doctrine.dbal.default\u connection']:$this->load($DIR\uuu DIR.'./getdoctrict\u dbal\u DefaultConnectionService.php'))&&false:'d);
${($\=isset($this->services['doctor.orm.default\u manager\u configurator'])?$this->services['doctor.orm.default\u manager\u configurator']:$this->services['doctor.orm.default\u manager\u configurator']=new\doctor\Bundle\DoctrineBundle\ManagerConfigurator(array(),array())&&false?:'->配置($instance);
返回$instance;
这是BETA 4中的代码

<?php

namespace ContainerXo2t2t9;

use Symfony\Component\DependencyInjection\Argument\RewindableGenerator;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\Container;
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
use Symfony\Component\DependencyInjection\Exception\LogicException;
use Symfony\Component\DependencyInjection\Exception\RuntimeException;
use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag;

/**
 * This class has been auto-generated
 * by the Symfony Dependency Injection Component.
 *
 * @final since Symfony 3.3
 */
class appDevDebugProjectContainer extends Container
{
/**
     * Gets the public 'doctrine.orm.default_entity_manager' shared service.
     *
     * @return \Doctrine\ORM\EntityManager
     */
    protected function getDoctrine_Orm_DefaultEntityManagerService($lazyLoad = true)
    {
        $a = ${($_ = isset($this->services['doctrine.dbal.default_connection']) ? $this->services['doctrine.dbal.default_connection'] : $this->getDoctrine_Dbal_DefaultConnectionService()) && false ?: '_'};
        $b = ${($_ = isset($this->services['annotation_reader']) ? $this->services['annotation_reader'] : $this->getAnnotationReaderService()) && false ?: '_'};

        if (isset($this->services['doctrine.orm.default_entity_manager'])) {
            return $this->services['doctrine.orm.default_entity_manager'];
        }

        $c = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($b, array(0 => 'D:\\jinya-gallery-cms\\src\\HelperBundle\\Entity', 1 => 'D:\\jinya-gallery-cms\\src\\DataBundle\\Entity'));

        $d = new \Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain();

        $e = new \Doctrine\ORM\Configuration();

        $this->services['doctrine.orm.default_entity_manager'] = $instance = \Doctrine\ORM\EntityManager::create($a, $e);

        $d->addDriver($c, 'HelperBundle\\Entity');
        $d->addDriver($c, 'DataBundle\\Entity');
        $d->addDriver(new \Doctrine\ORM\Mapping\Driver\XmlDriver(new \Doctrine\Common\Persistence\Mapping\Driver\SymfonyFileLocator(array('D:\\jinya-gallery-cms\\vendor\\friendsofsymfony\\user-bundle\\Resources\\config\\doctrine-mapping' => 'FOS\\UserBundle\\Model'), '.orm.xml')), 'FOS\\UserBundle\\Model');
        $e->setEntityNamespaces(array('HelperBundle' => 'HelperBundle\\Entity', 'DataBundle' => 'DataBundle\\Entity'));
        $e->setMetadataCacheImpl(${($_ = isset($this->services['doctrine_cache.providers.doctrine.orm.default_metadata_cache']) ? $this->services['doctrine_cache.providers.doctrine.orm.default_metadata_cache'] : $this->getDoctrineCache_Providers_Doctrine_Orm_DefaultMetadataCacheService()) && false ?: '_'});
        $e->setQueryCacheImpl(${($_ = isset($this->services['doctrine_cache.providers.doctrine.orm.default_query_cache']) ? $this->services['doctrine_cache.providers.doctrine.orm.default_query_cache'] : $this->getDoctrineCache_Providers_Doctrine_Orm_DefaultQueryCacheService()) && false ?: '_'});
        $e->setResultCacheImpl(${($_ = isset($this->services['doctrine_cache.providers.doctrine.orm.default_result_cache']) ? $this->services['doctrine_cache.providers.doctrine.orm.default_result_cache'] : $this->getDoctrineCache_Providers_Doctrine_Orm_DefaultResultCacheService()) && false ?: '_'});
        $e->setMetadataDriverImpl($d);
        $e->setProxyDir(($this->targetDirs[0].'/doctrine/orm/Proxies'));
        $e->setProxyNamespace('Proxies');
        $e->setAutoGenerateProxyClasses(true);
        $e->setClassMetadataFactoryName('Doctrine\\ORM\\Mapping\\ClassMetadataFactory');
        $e->setDefaultRepositoryClassName('Doctrine\\ORM\\EntityRepository');
        $e->setNamingStrategy(new \Doctrine\ORM\Mapping\UnderscoreNamingStrategy());
        $e->setQuoteStrategy(new \Doctrine\ORM\Mapping\DefaultQuoteStrategy());
        $e->setEntityListenerResolver(${($_ = isset($this->services['doctrine.orm.default_entity_listener_resolver']) ? $this->services['doctrine.orm.default_entity_listener_resolver'] : $this->services['doctrine.orm.default_entity_listener_resolver'] = new \Doctrine\Bundle\DoctrineBundle\Mapping\ContainerAwareEntityListenerResolver($this)) && false ?: '_'});

        ${($_ = isset($this->services['doctrine.orm.default_manager_configurator']) ? $this->services['doctrine.orm.default_manager_configurator'] : $this->services['doctrine.orm.default_manager_configurator'] = new \Doctrine\Bundle\DoctrineBundle\ManagerConfigurator(array(), array())) && false ?: '_'}->configure($instance);

        return $instance;
    }
}
'FOS\\UserBundle\\Model')、'.orm.xml')、'FOS\\UserBundle\\Model');
$e->setEntityNamespaces(数组('HelperBundle'=>'HelperBundle\\Entity','DataBundle'=>'DataBundle\\Entity');
$e->setMetadataCacheImpl(${($\=isset($this->services['doctrine\u cache.providers.doctrine.orm.default\u metadata\u cache'])?$this->services['doctrine\u cache.providers.doctrine.orm.default\u metadatacacheservice']:$this->getDoctrineCache\u providers\u doctrine\orm\u DefaultMetadataCacheService())&false:';
$e->setQueryCacheImpl(${($\=isset($this->services['doctrine\u cache.providers.doctrine.orm.default\u query\u cache'])?$this->services['doctrine\u cache.providers.doctrine.orm.default\u query\u cache']:$this->getDoctrineCache\u providers\u doctrine\u orm\u DefaultQueryCache())&false:';
$e->setResultCacheImpl(${($\=isset($this->services['doctrine\u cache.providers.doctrine.orm.default\u result\u cache'])?$this->services['doctrine\u cache.providers.doctrine.orm.default\u result\u cache']:$this->getDoctrineCache\u providers\u doctrine\u orm\u DefaultResultCache服务())&false:';
$e->setMetadataDriverImpl($d);
$e->setProxyDir(($this->targetDirs[0]./doctrine/orm/Proxies');
$e->setProxyNamespace(“代理”);
$e->SetAutoGenerateProxy类(真);
$e->setClassMetadataFactoryName('Doctrine\\ORM\\Mapping\\ClassMetadataFactory');
$e->setDefaultRepositoryClassName('Doctrine\\ORM\\EntityRepository');
$e->setNamingStrategy(new\Doctrine\ORM\Mapping\下划线名称策略());
$e->setQuoteStrategy(new\Doctrine\ORM\Mapping\DefaultQuoteStrategy());
$e->setEntityListenerResolver(${($\uISSet($this->services['doctrine.orm.default\u entity\u listener\u resolver'))?$this->services['doctrine.orm.default\u entity\u listener\u resolver']:$this->services['doctrine.orm.default\u entity\u listener\u resolver']=new\doctrine\Bundle\DoctrineBundle\Mapping\ContainerWareentityListenerResolver($this))&&false?:'''});
${($\=isset($this->services['doctor.orm.default\u manager\u configurator'])?$this->services['doctor.orm.default\u manager\u configurator']:$this->services['doctor.orm.default\u manager\u configurator']=new\doctor\Bundle\DoctrineBundle\ManagerConfigurator(array(),array())&&false?:'->配置($instance);
返回$instance;
}
}

结果是,在BETA 4中,在设置配置值之前创建了
EntityManager
。有人知道我如何影响缓存生成以创建工作缓存吗?

适合我的解决方案:

  • 使用
    composer安装需要ocramius/proxy manager
  • 对于每个侦听器,在
    标记中设置附加参数
    lazy:true

    app.service_doctrine.foo_listerner:
    class: AppBundle\Service\Doctrine\FooListener
    ...
    tags:
        - { name: doctrine.orm.entity_listener, entity_manager: default, lazy: true }
    

  • 这可能是一个测试错误,应该在Symfony-github-repo中报告。我已经报告了,但我认为以前有人有过,并且知道修复程序对我不起作用。我只有一个
    原则.event\u订阅