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

标签 php doctrine-orm orm doctrine

我正在关注 Doctrine Getting Started字母教程。

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

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

我得到 [OK] No Metadata Classes to process。这似乎是因为 Setup::createAnnotationMetadataConfigurationuseSimpleAnnotationReader 参数默认为 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/

相关文章:

php - 如何在初始数据输入后更新数据库记录

php - 教义2 : get count of one to many relation directly mapped in entity

java - 如何修复 my/hibernate.cfg.xml 文件?

php - Symfony 命令 --no-interaction 不起作用

php - 使用表名顺序的原则

ruby - 是否有使用普通 ruby​​ 对象并且不需要您从基类继承的 Ruby ORM?

node.js - Loopback - 扩展内置模型的最简单方法

PHP MySQL WHERE 子句列名错误

PHP 基于年日期的列中的平均值

php - 减少 Mysql 查询和 OOP