Symfony2 - "警告:class_parents():Class Ambience不存在且无法加载"

时间:2014-06-30 13:43:21

标签: php symfony doctrine-orm

我正在尝试使用yml创建一个实体,我收到以下错误:

[ErrorException]

  Warning: class_parents(): Class Ambience does not exist and could not be loaded in C:\wamp\www\demo\vendor\gedmo-doctrine-extensions\lib\Gedmo\Mapping\ExtensionMetadataFactory.php line 80

我在FooBundle / Resources / config / doctrine / metadata / orm中创建了一个名为 Entities.UserTestDelete.dcm.yml 的文件

档案内容:

Entities\UserTestDelete:
  type: entity
  table: users
  id:
    id:
      type: integer
      generator:
        strategy: AUTO
  fields:
    name:
      type: string
      length: 50

然后我执行了以下命令:

php app/console doctrine:mapping:import "DemoFooBundle" yml

然后我收到了错误。知道为什么会出现这个问题吗?

2 个答案:

答案 0 :(得分:1)

刚遇到同样的问题......并设法解决......

异常类的__contruct上的var_dump($ this),在我的例子中:

  • 的Symfony \元器件\调试\异常\ ContextErrorException

给了我$ message-> $ trace,这导致我:

  • 供应商/ sylius /资源包/事件监听/ LoadORMMetadataSubscriber.php
  • 调用函数" class_parents"
  • in function" setAssociationMappings"

如此快速的解决方法是简单地注释掉订阅的事件:

/**
 * @return array
 */
public function getSubscribedEvents()
{
//    return array(
//        'loadClassMetadata',
//    );
}

现在运行" app / console doctrine:mapping:import"再次......不再有错误......

如果需要,在再次启用/取消注释订阅的事件之前运行mapping:convert和generate:entities命令...

如果你没有使用Sylius,请尝试var_dump'你的异常类......很可能你也有一些事件列表干扰了Doctrine的导入命令...

祝你好运!

答案 1 :(得分:0)

<强> 更新
您的第一个错误是创建了yml文件。正如the cookbook中所述,doctrine:mapping:import命令实际生成文件。丢弃你的,运行命令,让doctrine自己生成文件 之后你做的是生成实际的实体类:

php app/console doctrine:mapping:convert annotation ./src
php app/console doctrine:generate:entities DemoFooBundle

如果表格本身尚未存在,那么您可以使用最后2个命令生成实体,然后运行

php app/console doctrine:schema:update --force

让教条为你创建表格。


快速浏览一下这本食谱会告诉我不应该引用包名,并且你可能想要将--force标志传递给doctrine:mapping:import命令。
It's in the reverse-engineering bit

php app/console doctrine:mapping:import --force DemoFooBundle yml

Symfony2 cookbook提供的示例,仅改为采用yml而不是xml格式。

错误消息也可能与表名相关:

table: users

实体被称为

class Users
{}

possible related question