我正在关注 Doctrine Getting Started字母教程。
我已经创建了 Product
类(通过从教程中复制/粘贴,以确保没有拼写错误),但是当我运行时
vendor/bin/doctrine orm:schema-tool:create
我得到 [OK] No Metadata Classes to process
。这似乎是因为 Setup::createAnnotationMetadataConfiguration
的 useSimpleAnnotationReader
参数默认为 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 和其他地方搜索,似乎这个问题通常是由于在注释中使用正斜杠而不是反斜杠(我没有)或 Product 实体中的其他拼写错误(我复制/粘贴)引起的,或将 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;
}
}
最佳答案
尝试使用以下语句:
use Doctrine\ORM\Mapping as ORM;
代替:
use Doctrine\ORM\Annotation as ORM;
关于php - 类中的 Doctrine 注释 "@Doctrine\ORM\Annotation\Entity"不存在或无法自动加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48168310/