我正在尝试使用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
然后我收到了错误。知道为什么会出现这个问题吗?
答案 0 :(得分:1)
刚遇到同样的问题......并设法解决......
异常类的__contruct上的var_dump($ this),在我的例子中:
给了我$ message-> $ trace,这导致我:
如此快速的解决方法是简单地注释掉订阅的事件:
/**
* @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
{}