Symfony2没有要处理的元数据类

Iva*_*van 8 php orm symfony doctrine-orm

创建实体后:

php app/console doctrine:generate:entity
Run Code Online (Sandbox Code Playgroud)

并在使用时:

php app/console doctrine:schema:update --force
Run Code Online (Sandbox Code Playgroud)

我遇到过:

没有要处理的元数据类.

实体

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;

    // ...
}
Run Code Online (Sandbox Code Playgroud)

小智 11

我有一个类似的问题,并花了一段时间,直到我找到如何清除缓存.仅清除学说的缓存对我不起作用.使用以下命令清除整个环境(在这种情况下生产一个)

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


Igo*_*vić 5

因此,实体管理器不会为您的实体创建元数据.以下是我首先要检查的事项:

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

有点offtopic:

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


pdo*_*naj 5

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


小智 5

更新数据库时,我遇到了同样的问题。因此,我遵循此解决方案,并尝试适应我的情况,并且该方法有效。我认为这确实是一个自动映射的问题,因为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
Run Code Online (Sandbox Code Playgroud)