我开始在silex中使用带有来自文档use Doctrine\ORM\Mapping as ORM;
的简单注释的学说,并且它起作用了。现在我看到symfony使用import @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);
我的配置没有其他选项
default-allow-internal
答案 0 :(得分:1)
您正在使用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
]);