找不到学说注释 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
]);
我开始在 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
]);