ZF2应用程序中的原则2:未找到实体“没有要处理的元数据类”。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZF2应用程序中的原则2:未找到实体“没有要处理的元数据类”。相关的知识,希望对你有一定的参考价值。
在Zend Framework 2项目中,Doctrine 2无法找到我的实体,我不知道为什么。对我来说,一切看起来都正确,但php ./vendor/bin/doctrine-module orm:schema-tool:create
命令基于实体创建数据库导致No Metadata Classes to process.
。
当然我首先确定所有模块都已加载,所以它并不那么容易;-)我也已经对这个问题做了一些研究,似乎大多数时候,它的名称空间相关,但是我再也看不到了那里有什么问题。我还生成了自动加载文件。
您是否能够发现这些文件中的任何错误,为什么Doctrine无法找到实体?它可能与我的文件中的错误有关吗?
在module.config.php
中,Doctrine配置如下:
'doctrine' => [
'driver' => [
'Catalog_entities' => [
'class' =>'DoctrineORMMappingDriverAnnotationDriver',
'cache' => 'array',
'paths' => [__DIR__ . '/../src/Catalog/Entity']
],
],
'orm_default' => [
'drivers' => [
'CatalogEntity' => 'Catalog_entities'
],
],
],
module.config.php
没有namespace
声明,因为它被包含在Module.php
中,顶部有namespace Catalog;
。
module/Catalog/src/Catalog/Entity/WorkEntity.php
的实体看起来像这样:
namespace CatalogEntity;
use DoctrineORMMapping as ORM;
/** @ORMEntity */
class Work {
/**
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
* @ORMColumn(type="integer")
*/
protected $id;
public function getId() {
return $this->id;
}
public function setId($id) {
$this->id = $id;
}
}
首先修复@Crisp他的评论。文件名和类名应始终对应。
如果这不能解决它,你可以检查你的Module.php
中是否正确加载了module.config.php:
/**
* @return array
*/
public function getConfig()
{
return __DIR__ . '/../../config/module.config.php';
}
我还建议使用命名空间常量,这样您就可以简单地将配置复制到不同的模块而不会改变任何事情,并最大限度地降低在忘记更改内容时覆盖其他配置的风险。像这样:
'driver' => [
__NAMESPACE__ . '_driver' => [
'class' => 'DoctrineORMMappingDriverAnnotationDriver',
'cache' => 'array',
'paths' => [__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity']
],
'orm_default' => [
'drivers' => [
__NAMESPACE__ . 'Entity' => __NAMESPACE__ . '_driver'
]
]
],
以上是关于ZF2应用程序中的原则2:未找到实体“没有要处理的元数据类”。的主要内容,如果未能解决你的问题,请参考以下文章
未找到 ZF2 类 PDO,但在 php 配置中启用了 PDO
ZF2 Doctrine - 使用查询构建器如何指向存储库中的自定义方法
ZF2:在 'Application\Entity\ #user' 中找不到目标实体
致命错误:调用未定义的方法 MyModule\Entity\MyEntity::findAll() 学说 orm 2 zf2