【问题标题】:Symfony2 No Metadata Classes to processSymfony2 没有要处理的元数据类
【发布时间】:2014-04-11 15:46:38
【问题描述】:

创建实体后:

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;

    // ...
}

【问题讨论】:

  • 你能发布错误吗?
  • 请提供出现此错误的代码。

标签: php symfony orm doctrine-orm


【解决方案1】:

我遇到了类似的问题,我花了一段时间才知道如何清除缓存。仅清除学说的缓存对我不起作用。使用以下命令清除整个环境(本例中为生产环境)

php app/console cache:clear --env=prod

【讨论】:

  • 你拯救了我的一天。谢谢你。这对我来说就像魅力一样
  • Symfony 3.1 有这个问题,这个答案解决了这个问题。
【解决方案2】:

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

【讨论】:

  • 帮我修好了 :)
【解决方案3】:

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

  1. 清除缓存
  2. 确保您的 AdminBundle 已在 AppKernel 中注册。
  3. 确保实体管理器的自动映射为true。或者,如果您使用的是自定义 EM,请正确设置。

有点跑题了:

我看到你正在制作一个菜单系统,我强烈建议你查看Doctrine Extensions Tree,它可以让你比使用你的结构更有效地查询和编辑项目。

【讨论】:

    【解决方案4】:

    我在更新数据库时遇到了同样的问题。 所以我遵循这个解决方案,我试图适应我的情况并且它有效。 我认为这确实是自动映射的问题,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
    

    【讨论】:

    • 帮我修好了
    【解决方案5】:

    对于同一件事的任何人,这些都是几个步骤:

    1。清除缓存:

    bin/console c:c --env=dev
    bin/console c:c --env=prod
    

    如果您同时发现任何错误,请尝试通过检查问题根源来覆盖它。

    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
    

    【讨论】:

      【解决方案6】:

      确保您的实体放置在您的捆绑包的Entity 目录中。在我的情况下,他们在Entities

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

          就我而言,我解决了创建 Entity 文件夹的问题。由于某种原因,它已被淘汰。希望能帮到你。

          【讨论】:

            【解决方案9】:

            我也遇到了同样的问题。对我来说,我的名为“Entity”的目录不在“AppBundle”中,而是在“src”目录中。将“Entity”目录移动到“AppBundle”目录为我解决了这个问题!

            【讨论】:

              猜你喜欢
              • 2012-08-18
              • 2018-07-08
              • 1970-01-01
              • 2012-04-03
              • 2015-08-13
              • 1970-01-01
              • 2018-06-11
              • 2011-08-23
              • 2019-01-12
              相关资源
              最近更新 更多