用:
创建实体后php app/console doctrine:generate:entity
使用:
php app/console doctrine:schema:update --force
我遇到了:
没有元数据类要处理。
实体
namespace ISLabAdminBundleEntity;
use DoctrineORMMapping as ORM;
/**
* @ORMEntity
* @ORMTable(name="menu_items")
*/
class MenuItem
{
/**
* @ORMColumn(name="id", type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORMColumn(name="parent", type="integer")
*/
private $parent;
// ...
}
我有一个类似的问题,花了我一段时间,直到我知道如何清除缓存。仅清除学说的缓存对我不起作用。使用下面的命令清除整个环境(在这种情况下为生产)
php app/console cache:clear --env=prod
我通过命令行通过交互式生成器生成实体时也有相同的问题。当我第一次创建时,我将配置格式设置为 php ,但这无效。因此,我删除了它并再次尝试,但是这次我选择了格式=注释。然后它起作用了!也许这可以解决某人的问题。
,因此Entity Manager并未为您的实体创建元数据。这是我首先检查的事情:
- 清除您的缓存
- 确保您的
AdminBundle
在Appkernel中注册。 - 确保Entity Manager的自动化为
true
。或如果您使用自定义EM。
正确设置
有点偏离:
我看到您正在制作菜单系统,我强烈建议您查看学说扩展树,这应该使您可以比结构更有效地查询和编辑项目。
我更新数据库时也有同样的问题。因此,我遵循此解决方案,并试图适应我的案例,并且有效。我认为这确实是一个自动化的问题,即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: AppBundleEntity
alias: AppBundle
对于同一件事的任何人,这些都是几个步骤:
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: AcmeBundleBlogBundleModelEntity
is_bundle: true
3。更新您的数据库架构:
您现在可以更新数据库架构而没有任何问题:
bin/console doctrine:schema:update
尽管这是大多数情况下的最后一步,但您仍然可以使用--verbose
来找到任何可能的问题。
bin/console doctrine:schema:update --verbose
确保将您的实体放在捆绑包的Entity
目录中。就我而言,它们代替了Entities
。
对我而言,从CMD中生成所有实体进行了工作。
在我的情况下,我解决了创建 entity 文件夹的问题。由于某种原因,它被消除了。我希望它能有所帮助。
我遇到了同样的问题。对我来说,我的目录称为"实体",不是在" AppBundle"中,而是在" SRC"目录中。将"实体"目录移动到" AppBundle"目录为我解决问题!