@Roman-G

Как загружать файлы сущностей в Doctrine 2?

Всем привет. Только начинаю разбираться с Doctrine 2 (2.5.0).
Документацию прочитал, делаю всё по инструкции, но удача почему-то мне не улыбается.
Что я делаю не так?

/src/user.php
<?php

/** @Entity @Table(name="user") */
class User {
  
  /** @Id @Column(type="integer") @GeneratedValue */
  protected $userId;
  
  public function getUserId() {
    $userId = $this->userId;
    
    return $userId;
  }
}


bootstrap.php
<?php

use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;

require_once "vendor/autoload.php";

$entityPath = array('src');

$isDevMode = true;

$config = Setup::createAnnotationMetadataConfiguration($entityPath, $isDevMode);

$databaseParameters = array('driver' => 'pdo_mysql', 
                            'user' => 'root', 
                            'password' => '', 
                            'dbname' => 'doctrine');

$entityManager = EntityManager::create($databaseParameters, $config);

$user = $entityManager->find('User', 1);


Результат выполнения:
Fatal error: Uncaught exception 'Doctrine\Common\Persistence\Mapping\MappingException' with message 'Class 'User' does not exist' in C:\OpenServer\domains\doctrine\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\MappingException.php:96 Stack trace: #0 C:\OpenServer\domains\doctrine\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\RuntimeReflectionService.php(41): Doctrine\Common\Persistence\Mapping\MappingException::nonExistingClass('User') #1 C:\OpenServer\domains\doctrine\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php(281): Doctrine\Common\Persistence\Mapping\RuntimeReflectionService->getParentClasses('User') #2 C:\OpenServer\domains\doctrine\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php(311): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getParentClasses('User') #3 C:\OpenServer\domains\doctrine\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php(216): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata('User') #4 C:\OpenServer\domains\doctrine\vendor\doctrine\orm\lib\Doctrine\ORM\EntityManager.php(360): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor('User') #5 C:\OpenServer\domains\doctrine\bootstrap.php(21): Doctrine\ORM\EntityManager->find('User', 1) #6 {main} thrown in C:\OpenServer\domains\doctrine\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\MappingException.php on line 96

Если подключать файл /src/User.php через include, то всё работает. В чем же проблема?
  • Вопрос задан
  • 683 просмотра
Решения вопроса 1
@wittyrider
systemd есть людей
В чем же проблема

очевидно в автолоадере.

в composer.json добавьте:
{
  "autoload": {
    "psr-4": {
      "": "src/"
    }
  }
}

потом обновите автолоадера
composer --dump-autoloader
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SowingSadness
@SowingSadness
web-разработчик
Автолоад не срабатывает. Всё просто же.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы