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的这个问题,这个答案解决了这个问题。为我解决了:)为我解决了