Doctrine ORM 的映射异常 - 类不存在

问题描述 投票:0回答:2

我在我的 PHP 项目中使用 Doctrine 2.6.2。使用 ORM 工具成功创建了 Schema,但在运行时会抛出 MappingException。

我仍然无法理解异常错误消息“类'凭据'不存在于......”,因为我不了解学说的内部结构。

我的composer.json文件:

{
    "require": {
        "doctrine/orm": "^2.6.2",
        "symfony/yaml": "2.*"
    },
    "autoload": {
        "psr-0": {"": "src/"}
    }
}

我尝试更改一些 phpdoc 注释并多次重置架构。

有人经历过类似的教义问题吗?我希望得到一些关于此问题的提示,因为我什至不确定这个问题是由我的 PHP 代码文件引起的,还是由我正在使用的 orm 工具的某些配置错误引起的,或者很可能是由我没想到的东西引起的还没有。

/**
 * @Entity @Table(name="credentials")
 */
class Credentials
{

    /** @Id @Column(type="integer") @GeneratedValue **/
    protected $id;

    /** @Column(type="string") **/
    public $Email;

    /** @Column(type="string") **/
    public $Loginname;

    /** @Column(type="string") **/
    public $EntropyString;

    /** @Column(type="string") **/
    public $AccessToken;


    public function __construct()
    {

    }

    public function getId()
    {
        return $this->id;
    }

}

这是 apache 的完整回复:

致命错误:未捕获 Doctrine\Common\Persistence\Mapping\MappingException:类 “凭据”不存在于 F:\XAMPP\httpd.private\src\php endor\doctrine\persistence\lib\Doctrine\Common\Persistence\Mapping\MappingException.php:93 堆栈跟踪:#0 F:\XAMPP\httpd.private\src\php endor\doctrine\persistence\lib\Doctrine\Common\Persistence\Mapping\RuntimeReflectionService.php(24): Doctrine\Common\Persistence\Mapping\MappingException::nonExistingClass('credentials')

1 F:\XAMPP\httpd.private\src\php endor\doctrine\persistence\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php(250):

Doctrine\Common\Persistence\Mapping\RuntimeReflectionService->getParentClasses('credentials')

2 F:\XAMPP\httpd.private\src\php endor\doctrine\persistence\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php(283):

Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getParentClasses('credentials')

3 F:\XAMPP\httpd.private\src\php endor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadat

在 F:\XAMPP\httpd.private\src\php endor\doctrine\persistence\lib\Doctrine\Common\Persistence\Mapping\MappingException.php 93号线

调用 EntityManager 的 Find 方法时发生错误:

$this->credentials = $this->entityManager->Find('credentials', $result[0]["id"]);
php orm doctrine
2个回答
3
投票

将完全限定的类名添加到 EntityManager 的 Find 方法的调用中后,不再出现异常:

$this->credentials = $this->entityManager->Find('Businessrelations\Database\Credentials', $result[0]["id"]);

0
投票

您可以使用 PHP 5.5 中的 ::class

use theNamesPaceToYourClass/Credentials;
    
$this->credentials = $this->entityManager->Find(Credentials::class, $result[0]["id"]);
© www.soinside.com 2019 - 2024. All rights reserved.