Php Symfony2没有要处理的元数据类

Php Symfony2没有要处理的元数据类,php,symfony,orm,doctrine-orm,Php,Symfony,Orm,Doctrine Orm,创建实体后,使用: php app/console doctrine:generate:entity 在使用时: php app/console doctrine:schema:update --force 我遇到: 没有要处理的元数据类 实体 namespace ISLab\AdminBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="menu_items") *

创建实体后,使用:

php app/console doctrine:generate:entity
在使用时:

php app/console doctrine:schema:update --force
我遇到:

没有要处理的元数据类

实体

namespace ISLab\AdminBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="menu_items")
 */
class MenuItem
{
    /**
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(name="parent", type="integer")
     */
    private $parent;

    // ...
}

所以实体管理器没有为您的实体创建元数据。以下是我首先要检查的事项:

  • 清除缓存
  • 确保您的
    AdminBundle
    已在AppKernel中注册
  • 确保实体管理器的自动映射为
    true
    。或者,如果您使用的是自定义EM,请正确设置它
  • 有点离题:


    我看到您正在制作一个菜单系统,我强烈建议您检查一下,它应该允许您比使用您的结构更高效地查询和编辑项目。

    我也遇到了类似的问题,花了一段时间才找到如何清除缓存的方法。只清除条令的缓存对我不起作用。使用下面的命令清除整个环境(本例中为生产环境)


    php应用程序/控制台缓存:clear--env=prod

    当我从命令行通过交互式生成器生成实体时,遇到了相同的问题。当我第一次创建时,我将配置格式设置为PHP,但这不起作用。所以我删除了它并重试,但这次我选择了format=annotation。然后成功了!也许这可以解决某人的问题。

    我在更新数据库时也遇到了同样的问题。 所以我遵循这个解决方案,我试着适应我的情况,它起了作用。 我认为这是一个自动映射的问题。事实上,如果auto_mapping设置为true,symfony就无法找到实体。 我希望这能有所帮助

      orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        mappings:
            AppBundle:
                type: annotation
                is_bundle: false
                dir: %kernel.root_dir%/../src/AppBundle/Entity/
                prefix: AppBundle\Entity
                alias: AppBundle
    

    确保您的实体位于捆绑包的
    Entity
    目录中。在我的例子中,它们位于
    实体中。

    对于我来说,从cmd生成所有实体完成了工作。

    在我的例子中,我解决了创建实体文件夹的问题。由于某种原因,它被取消了。我希望它能有所帮助。

    对于从事同样工作的人,以下是几步:

      orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        mappings:
            AppBundle:
                type: annotation
                is_bundle: false
                dir: %kernel.root_dir%/../src/AppBundle/Entity/
                prefix: AppBundle\Entity
                alias: AppBundle
    
    1.清除缓存: 如果您同时看到任何错误,请尝试通过检查问题的根源来掩盖它

    2.检查您的配置: 根据此示例目录结构:

    Application
    |
    └- src
       |
       └- Acme
          |
          └- Bundle
             |
             └- BlogBundle
                |
                └- Model
                   |
                   └- Entity
    
    您应该在
    app/config/config.yml
    文件中有此配置:

    doctrine:
    
        ...
    
        orm:
            auto_generate_proxy_classes: '%kernel.debug%'
            naming_strategy: doctrine.orm.naming_strategy.underscore
            auto_mapping: true
            mappings:
                AcmeBlogBundle:
                    mapping: true
                    type: annotation
                    dir: Model/Entity
                    alias: Blog
                    prefix: Acme\Bundle\BlogBundle\Model\Entity
                    is_bundle: true
    
    3.更新数据库架构: 现在,您可以毫无问题地更新数据库架构:

    bin/console doctrine:schema:update
    
    尽管这是大多数情况下的最后一步,您仍然可以使用
    --verbose
    来查找任何可能的问题

    bin/console doctrine:schema:update --verbose
    

    我也有同样的问题。对我来说,我的名为“Entity”的目录不在“AppBundle”中,而是在“src”目录中。将“Entity”目录移动到“AppBundle”目录修复了我的问题

    您可以发布错误吗?请提供发生此错误的代码。您保存了我的一天。非常感谢。这对我来说就像charmHad解决了Symfony 3.1的这个问题,这个答案解决了这个问题。为我解决了:)为我解决了