我现在已经没有想法,谷歌也没有帮助。我相信这个问题很容易解决,但目前我还没有看到它为什么会发生。使用开发模式,我的测试环境一切正常。
但是,在开发模式关闭且需要手动生成代理文件的生产中,它不起作用。
我第一次在生产环境中生成代理文件,一切正常。现在我需要改进一些实体,当我使用" doctrine orm:generate-proxies"再次命令,然后生成所有代理文件,当我查看新的实体代理文件时,我可以看到新列被映射。
但是当我尝试保存或加载新对象时,没有任何内容被保存或加载到新列。就好像学说2没有理解的那样,它应该使用新的代理文件。相反,它继续使用一些其他隐藏的旧代理文件,在一些黑暗的末端缓存。
知道为什么教义2不使用新生成的代理文件?
为了更加清晰,这是Doctrine Initialisation代码。
$paths = array(__DIR__ . '/../ORM/Definition/Doctrine2/Entity');
$isDevMode = false;
$autoGenerateProxyClasses = AbstractProxyFactory::AUTOGENERATE_NEVER;
if ($this->serverDevelopment()) {
$isDevMode = true;
$autoGenerateProxyClasses = AbstractProxyFactory::AUTOGENERATE_ALWAYS;
}
$dbParams = array(
'driver' => 'pdo_mysql',
'user' => 'REMOVE',
'password' => 'REMOVE',
'dbname' => 'REMOVE',
'host' => 'REMOVE'
);
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$config->setProxyDir(__DIR__ . '/../ORM/Definition/Doctrine2/Entity/Proxy');
$config->setProxyNamespace('Database\ORM\Definition\Doctrine2\Entity\Proxy');
$config->setAutoGenerateProxyClasses($autoGenerateProxyClasses);
$this->entityManager = EntityManager::create($dbParams, $config);
任何帮助将不胜感激, 亨德里克
答案 0 :(得分:0)
我使用以下代码生成代理:
$em = Zend_Registry::get('em');
$proxyFactory = $em->getProxyFactory();
$metadatas = $em->getMetadataFactory()->getAllMetadata();
$proxyFactory->generateProxyClasses($metadatas, APPLICATION_PATH . '/models/Proxies');
我在模型文件夹中有Proxies文件夹。
尝试使用此代码生成代理。
答案 1 :(得分:0)
发现了这个问题。但我不确定,如果它是权限或用户。但我将文件夹从775更改为777,也是用户。现在它有效:)