创建实体后:
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;
// ...
}
答案 0 :(得分:11)
我遇到了类似的问题并花了一段时间才找到如何清除缓存。仅清除学说的缓存对我不起作用。使用以下命令清除整个环境(在本例中为生产环境)
php app/console cache:clear --env=prod
答案 1 :(得分:5)
因此,实体经理没有为您的实体创建元数据。以下是我首先要检查的事项:
AdminBundle
已在AppKernel中注册。true
。或者,如果您使用自定义EM,请正确设置。有点偏离主题:
我发现你正在创建一个菜单系统,我强烈建议你查看Doctrine Extensions Tree,它可以让你比你的结构更有效地查询和编辑项目。
答案 2 :(得分:5)
当我从命令行通过交互式生成器生成实体时遇到了同样的问题。当我第一次创建时,我将配置格式设置为 PHP ,但这不起作用。所以我删除了它并再次尝试,但这次我选择了 format = annotation 。然后它工作了!也许这可以解决某人的问题。
答案 3 :(得分: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
答案 4 :(得分:1)
对于同一件事的任何人来说,这几步是:
bin/console c:c --env=dev
bin/console c:c --env=prod
如果您同时发现任何错误,请尝试通过检查问题来源来解决。
根据此示例目录结构:
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
您现在可以毫无问题地更新数据库架构:
bin/console doctrine:schema:update
尽管这是大多数情况下的最后一步,但您仍然可以使用--verbose
来查找任何其他可能的问题。
bin/console doctrine:schema:update --verbose
答案 5 :(得分:0)
确保您的实体放在捆绑包的Entity
目录中。在我的情况下,他们改为Entities
。
答案 6 :(得分:0)
对我来说,从cmd生成所有实体都可以完成工作。
答案 7 :(得分:0)
就我而言,我解决了创建实体文件夹的问题。由于某种原因,它已被淘汰。我希望它可以提供帮助。
答案 8 :(得分:0)
我遇到了同样的问题。对我来说,我的名为'Entity'的目录不是在'AppBundle'中,而是在'src'目录中。将'Entity'目录移动到'AppBundle'目录为我解决了问题!