Slim 3 + Doctrine 2: Class 'User' не существует, MappingException

Я использую 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

Надеюсь, кто-нибудь поможет исправить это ..

Похоже, вам не хватает импорта для аннотаций в вашем классе сущности User. Это было что-то вроде "используйте Doctrine \ ORM \ Mapping;"

Eakethet 20.04.2018 10:35

Икетет, должно быть? потому что я их не использую

Daniel Pysarenko 20.04.2018 13:20

Собственно, вы используете их в аннотациях ... @Column и т.д., все идет из этого ORM \ Mapping

Eakethet 20.04.2018 13:22

уже пытался добавить "использовать Doctrine \ ORM \ Mapping" + все "@" в DocBlock заменено на экземпляр "@ORM \": "@Entity" -> "@ORM \ Entity". Проблема не решена

Daniel Pysarenko 20.04.2018 13:31

если вы пробовали @ORM \ Entity, вы должны объявить оператор использования как «использовать Doctrine \ ORM \ Mapping как ORM;», не так ли?

Eakethet 20.04.2018 13:34

Икетет, да конечно

Daniel Pysarenko 20.04.2018 13:48

и я обнаружил новую ошибку ... Класс «Пользователь» не является допустимым объектом или отображенным суперклассом.

Daniel Pysarenko 20.04.2018 13:54
stackoverflow.com/questions/31333129/…
Zamrony P. Juhara 21.04.2018 04:00
github.com/doctrine/DoctrineBundle/issues/282
Zamrony P. Juhara 21.04.2018 04:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
9
496
1

Ответы 1

Проблема решена!

Когда я использовал метод doctrine getRepository (), параметр был ('User'), я изменил его на (UserEntity :: class) перед добавлением use App \ Models \ User as UserEntity;

Другие вопросы по теме