找不到学说注释 reader class

Doctrine annotation reader class not found

我开始在 silex 中使用 doctrine 和来自文档 @Entity 的简单注释并且它起作用了。现在我看到 symfony 使用 import use Doctrine\ORM\Mapping as ORM;@ORM\Entity。但是当我添加这个时,学说会引发错误 Class "App\Entity\Author" is not a valid entity or mapped super class.


namespace App\Entity;

use App\Helpers\Jsonable;
use App\Helpers\MassAssignable;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Repository\AuthorRepository")
 * @ORM\Table(name="authors")
 */
class Author
{
    use MassAssignable;
    use Jsonable;

    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     * @var int
     */
    protected $id;
    /**
     * @ORM\Column(type="string")
     * @var string
     */
    protected $name;

我的配置没有额外的选项

$config = Setup::createAnnotationMetadataConfiguration([
    __DIR__.'/../src/Entity/'
]);


$app['db.em'] = EntityManager::create($app['db'], $config);

您正在使用 SimpleAnnotationReader,它无法从非直接导入的命名空间加载注释。您可以通过将 false 作为元数据配置的第 5 个参数传递来轻松切换。

public static function createAnnotationMetadataConfiguration(array $paths, $isDevMode = false, $proxyDir = null, Cache $cache = null, $useSimpleAnnotationReader = true)

所以在你的情况下:

$config = Setup::createAnnotationMetadataConfiguration(
    [__DIR__.'/../src/Entity/'],
    false,
    null,
    null,
    false
]);