尝试运行命令行工具,w/odm:schema:create and我收到以下错误:
"[Semantical Error] The annotation "@Document" in class Company_Model_Auth was never imported. Did you maybe forget to add a "use" statement for this annotation?" and
"[Semantical Error] The annotation "@EmbeddedDocument" in class Company_Model_Auth was never imported. Did you maybe forget to add a "use" statement for this annotation?"
以及其他,基本上对于每个注释。
当我添加"use ''Doctrine''ODM''MongoDB''Mapping''Annotations''EmbeddedDocument;"(或 ''Document)到它工作的文件并前进到下一个模型。然后,它将在下一个文件中抱怨缺少相同的类(文档/嵌入式文档和任何其他注释)。是否期望我必须将 use 语句添加到每个文件?
以下是我构建文档管理器的方式:
public function _initDm()
{
AnnotationDriver::registerAnnotationClasses();
$config = new Configuration();
$config->setProxyDir(APPLICATION_PATH . '/../data/Proxies');
$config->setProxyNamespace('Proxies');
$config->setHydratorDir(APPLICATION_PATH . '/../data/Hydrators');
$config->setHydratorNamespace('Hydrators');
$config->setMetadataDriverImpl(AnnotationDriver::create(APPLICATION_PATH . '/models'));
// Pull in mongo db connection options from application.ini
$options = $this->getOption('mongo');
$config->setDefaultDB($options['database']);
// Create a DocumentManager and store in ZendRegistry
$dm = DocumentManager::create(new Connection($this->_createMongoDbConnectionString($options)), $config);
Zend_Registry::set('dm', $dm);
}
我仔细检查了一下,./repos/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/Mapping/Annotations/DoctrineAnnotations.php文件肯定被击中了,并且require_once正确的注释文件。
作曲家预配的版本:
"doctrine/common": "2.3.0-RC3",
"doctrine/mongodb": "1.0.1",
"doctrine/mongodb-odm": "1.0.0-BETA7",
"symfony/console": "2.1.*@dev",
任何帮助将不胜感激,因为我认为我不应该为每个文件添加 use 语句。
注释解析器确实要求在使用之前导入注释类。代替显式导入每个注释类,您可以执行以下操作(从测试套件中移除):
<?php
namespace Documents;
use Doctrine'ODM'MongoDB'Mapping'Annotations as ODM;
/**
* @ODM'Document
*/
class User
{
/** @ODM'Id */
protected $id;
/** @ODM'Field(type="string") */
protected $username;
// Other fields follow...
}