文档或我有问题。我做了文档所说的所有内容。
当我进入终端时:
$ php vendor/bin/doctrine orm:schema-tool:create
输出是:
No Metadata Classes to process
我阅读了许多帖子,谷歌并尝试了许多例子,但没有。
http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/getting-started.html
答案 0 :(得分:95)
我认为您从Doctrine2: getting started获取了配置示例:
$isDevMode = true;
$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."/src"), $isDevMode);
现在的诀窍是 Setup :: createAnnotationMetadataConfiguration 方法默认使用SimpleAnnotationReader。您可以通过将第五个参数更改为false来更改此行为:
$isDevMode = true;
$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."/src"), $isDevMode, null, null, false);
这将迫使Doctrine使用非简单的AnnotationReader,它现在可以处理你的模型!
答案 1 :(得分:7)
TL; DR:确保您创建的元数据类型与您使用的“创建元数据配置”方法相匹配。
我在使用Doctrine“入门”指南时遇到了同样的问题。仔细查看一下Doctrine代码后,我弄清楚出了什么问题。基本上,“获取EntityManager”部分的教程中的代码是:
$config = Setup::createAnnotationMetadataConfiguration(
array(__DIR__."/src"), $isDevMode);
在本教程的“开始使用产品”部分中,它向我们展示了如何设置元数据,并为每个可能的选项提供了示例。教程说:
使用XML,YAML或Docblock Annotations配置实体的元数据。本入门指南将显示所有映射驱动程序的映射。文中的参考文献将用于XML映射。
由于这个陈述,我决定使用XML配置。不幸的是,教程代码中的createAnnotationMetadataConfiguration
方法似乎没有使用我创建的XML文件。 (事后看来,似乎更明显的是,这种方法专门指的是注释元数据,而不是XML元数据!)
在我将其更改为createXMLMetadataConfiguration
后,它按预期工作。因此,看起来这个问题的一个可能来源是您使用的“创建元数据配置”方法可能与您创建的元数据类型不匹配。
答案 2 :(得分:4)
尝试清除缓存:
sudo -u www-data php app/console cache:clear --env=dev
答案 3 :(得分:1)
取消注释bootstrap.php中的以下行之一:
paste
这取决于您是否创建了yaml或xml元配置文件......
希望这有帮助。
答案 4 :(得分:1)
自定义Doctrine安装存在同样的问题。我的解决方案是重新设置元数据驱动程序:
$config->setMetadataDriverImpl(
new Doctrine\ORM\Mapping\Driver\AnnotationDriver(
new Doctrine\Common\Annotations\CachedReader(
new Doctrine\Common\Annotations\AnnotationReader(),
new Doctrine\Common\Cache\ArrayCache()
),
ENTITY_DIR
)
);
来自http://support.skipper18.com/1120/how-use-external-tools-generate-doctrine-getters-and-setters?show=1121#a1121的解决方案 我的方案是generating entities from existing database
newDefaultAnnotationDriver adds the namespace和方法注释说明如下:
如果$ useSimpleAnnotationReader为true,则表示法
@Entity
将为 工作,否则,将支持符号@ORM\Entity
。
答案 5 :(得分:0)
在新的ZF2模块中创建新的doctrine配置时遇到了同样的问题。
问题是由
引起的 'User\Entity' => 'property_entities'
用户部分来自旧实体
'Property\Entity' => 'property_entities'
更改了解决问题的方法
答案 6 :(得分:0)
就我而言,问题在于用于批注的星号数量
<?php
namespace Models;
use Doctrine\ORM\Annotation\{Id, Column, GeneratedValue, Entity};
/** // I originally used one asterisk here and kept getting the error in question. Error disappeared after doubling the asterisk as it is in this answer
* @Entity(repositoryClass="Doctrine\ORM\Annotation\Id")
*/
class User {
}
?>
答案 7 :(得分:0)
如果您正在使用XML映射(使用apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: connection
namespace: my-test
spec:
filters:
- filterName: envoy.buffer
filterType: HTTP
filterConfig:
maxRequestBytes: 21000000.0 #21MB
),则可能需要注意以下几点:
Setup::createXMLMetadataConfiguration()
结尾,而不仅以.dcm.xml
结尾。.xml
,您必须在XML路径中有Company\Solution\Models\User
映射文件。答案 8 :(得分:-3)
尝试以下命令:
php vendor/bin/doctrine-module orm:schema-tool:create