类中的Doctrine注释“@Doctrine \ ORM \ Annotation \ Entity”不存在或无法自动加载

时间:2018-01-09 12:32:39

标签: php doctrine-orm orm doctrine

我正在关注Doctrine Getting Started教程。

我已经创建了Product类(通过教程中的复制/粘贴,以确保没有拼写错误),但是当我运行时

vendor/bin/doctrine orm:schema-tool:create

我得到[OK] No Metadata Classes to process。这似乎是因为useSimpleAnnotationReader Setup::createAnnotationMetadataConfiguration参数默认为true

因此,如果我将其更改为false

$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."/src"), $isDevMode, null, null, false);

现在运行上面的schema-tool:create命令会返回:

[Doctrine\Common\Annotations\AnnotationException]
[Semantical Error] The annotation "@Doctrine\ORM\Annotation\Entity" in class Product does not exist, or could not be auto-loaded.

何时应该执行然后转储生成的SQL。

在SO和其他地方搜索,似乎这个问题通常是由注释(我没有)或产品实体中的其他拼写错误(我复制/粘贴)中使用正斜杠而不是反斜杠引起的,或者使用Doctrine作为更广泛框架的一部分(Zend,Symfony)。

我的Product.php

<?php
// src/Product.php

use Doctrine\ORM\Annotation as ORM;

/**
 * @ORM\Entity @ORM\Table(name="products")
 **/
class Product
{
    /** @ORM\Id @ORM\Column(type="integer") @ORM\GeneratedValue **/
    protected $id;

    /** @ORM\Column(type="string") **/
    protected $name;

    public function getId()
    {
        return $this->id;
    }

    public function getName()
    {
        return $this->name;
    }

    public function setName($name)
    {
        $this->name = $name;
    }
}

1 个答案:

答案 0 :(得分:14)

尝试使用以下语句:

use Doctrine\ORM\Mapping as ORM;

而不是:

use Doctrine\ORM\Annotation as ORM;