Я использую Slim 3 с Doctrine 2.
Я не могу решить эту проблему другими вопросами о stackoverflow, поиск в goolge также не помогает ...
Я пытался сохранить пользователя при регистрации, но
Slim Application Error The application could not run because of the following error: Details Type: Doctrine\Common\Persistence\Mapping\MappingException Message: Class 'User' does not exist File: C:\wamp\www\slimproject\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\MappingException.php Line: 96
Мой класс пользователя
!!! Когда я удаляю строку «namespace App \ Models;» работает нормально, думаю вот проблема ..
<?php
namespace App\Models;
/**
* @Entity
* @Table(name = "users")
*/
class User
{
/**
* @id
* @Column(type = "integer")
* @GeneratedValue(strategy = "AUTO")
*
*/
public $id; ect
/**
* @name
* @Column(type = "string")
*/
public $name; ect...
AuthController:
use App\Models\User;
...
$user = new User();
$user->setEmail($request->getParam('email'));
$user->setName($request->getParam('name'));
$user->setPassword(password_hash($request->getParam('password'), PASSWORD_DEFAULT) );
$user->created_at();
$user->updated_at();
$db = new Doctrine();
$db->em->persist($user);
$db->em->flush();
мой composer.json
"autoload": {
"psr-4": {
"App\\": "app/",
"Tests\\": "tests/"
}
}
Конфигурация доктрины
$paths = array('/app/Models/');
$isDevMode = false;
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$connectionOptions = array(
'driver' => 'pdo_mysql',
'host' => 'localhost',
'dbname' => 'monday',
'user' => 'root',
'password' => '',
);
$this->em = EntityManager::create($connectionOptions, $config);
Структура папки (WAMP)
www/
---slimproject/
--------------app/
-----------------Controllers/
----------------------------Auth/AuthController.php
-----------------Models/User.php
--------------public/
--------------composer.json
Надеюсь, кто-нибудь поможет исправить это ..
Икетет, должно быть? потому что я их не использую
Собственно, вы используете их в аннотациях ... @Column и т.д., все идет из этого ORM \ Mapping
уже пытался добавить "использовать Doctrine \ ORM \ Mapping" + все "@" в DocBlock заменено на экземпляр "@ORM \": "@Entity" -> "@ORM \ Entity". Проблема не решена
если вы пробовали @ORM \ Entity, вы должны объявить оператор использования как «использовать Doctrine \ ORM \ Mapping как ORM;», не так ли?
Икетет, да конечно
и я обнаружил новую ошибку ... Класс «Пользователь» не является допустимым объектом или отображенным суперклассом.






Проблема решена!
Когда я использовал метод doctrine getRepository (), параметр был ('User'), я изменил его на (UserEntity :: class) перед добавлением use App \ Models \ User as UserEntity;
Похоже, вам не хватает импорта для аннотаций в вашем классе сущности User. Это было что-то вроде "используйте Doctrine \ ORM \ Mapping;"