Symfony 4 make: entity --regenerate fail with: Никаких сущностей не найдено в пространстве имен "App"

из composer.json

{
    "name": "symfony/website-skeleton",
    "type": "project",
    "license": "MIT",
    "description": "A skeleton to start a new Symfony website",
    "require": {
        "php": "^7.1.3",
        "ext-iconv": "*",
        "sensio/framework-extra-bundle": "^5.1",
        "symfony/apache-pack": "^1.0",
        "symfony/asset": "^4.0",
        "symfony/console": "^4.0",
        "symfony/expression-language": "^4.0",
        "symfony/flex": "^1.0",
        "symfony/form": "^4.0",
        "symfony/framework-bundle": "^4.0",
        "symfony/lts": "^4@dev",
        "symfony/monolog-bundle": "^3.1",
        "symfony/orm-pack": "^1.0",
        "symfony/process": "^4.0",
        "symfony/security-bundle": "^4.0",
        "symfony/serializer-pack": "*",
        "symfony/swiftmailer-bundle": "^3.1",
        "symfony/translation": "^4.0",
        "symfony/twig-bundle": "^4.0",
        "symfony/validator": "^4.0",
        "symfony/web-link": "^4.0",
        "symfony/webpack-encore-pack": "*",
        "symfony/yaml": "^4.0"
    },
    "require-dev": {
        "symfony/browser-kit": "^4.0",
        "symfony/css-selector": "^4.0",
        "symfony/debug-pack": "*",
        "symfony/dotenv": "^4.0",
        "symfony/maker-bundle": "^1.5",
        "symfony/phpunit-bridge": "^4.0",
        "symfony/profiler-pack": "*",
        "symfony/web-server-bundle": "^4.0"
    },
    "config": {
        "preferred-install": {
            "*": "dist"
        },
        "sort-packages": true
    },
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "App\\Tests\\": "tests/"
        }
    },
    "replace": {
        "symfony/polyfill-iconv": "*",
        "symfony/polyfill-php71": "*",
        "symfony/polyfill-php70": "*",
        "symfony/polyfill-php56": "*"
    },
    "scripts": {
        "auto-scripts": {
            "cache:clear": "symfony-cmd",
            "assets:install --symlink --relative %PUBLIC_DIR%": "symfony-cmd"
        },
        "post-install-cmd": [
            "@auto-scripts"
        ],
        "post-update-cmd": [
            "@auto-scripts"
        ]
    },
    "conflict": {
        "symfony/symfony": "*"
    },
    "extra": {
        "symfony": {
            "allow-contrib": false
        }
    }
}

из doctrine.yaml:

# /config/packages/doctrine.yaml
doctrine:
    dbal:
        default_connection: training
        connections:
            training:
                dbname:   "training"
                driver:   "pdo_mysql"
                host:     "localhost"
                port:     "3306"
                user:     "userdb"
                password: "XXXXXXXXXX"
                charset:  UTF8
                mapping_types:
                    bit: boolean
    orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        default_entity_manager: training
        entity_managers:
            training:
                connection: training
                auto_mapping: true

команда:

php bin/console doctrine:mapping:import --em=training App\Entity annotation --path=src/Entity

произвести в src/Entity сущность Course.php:

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Course
 *
 * @ORM\Table(name = "course", indexes = {@ORM\Index(name = "id_product_idx_1", columns = {"id_product"}), @ORM\Index(name = "enabled_idx_1", columns = {"enabled"}), @ORM\Index(name = "sort_idx_1", columns = {"sort"})})
 * @ORM\Entity
 */
class Course
{
    ....

после запуска в консоль:

php bin/console make:entity --regenerate App

это сбой с ошибкой:

No entities were found in the "App" namespace

то же самое для

php bin/console make:entity --regenerate App\Entity 

если я попробую

php bin/console make:entity --regenerate App\Entity\Course

выход

Could not find Doctrine metadata for "App\Entity\Course". Is it mapped as an entity?

что я делаю не так?

Вы пробовали "php bin / console generate: doctrine: entity App: Course"?

richin 30.05.2018 15:07

@richin Command generate:doctrine:entity is not defined

ar099968 30.05.2018 15:24

"php bin / console make: entity --regenerate" без пространства имен приложения?

richin 30.05.2018 16:17

Я пробовал без пространства имен, но мне предлагается его вставить. Я пробовал вставить: "пусто", Приложение, Приложение \ Сущность, но возникает та же ошибка

ar099968 30.05.2018 16:46
Стоит ли изучать 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 и хотите разрабатывать...
4
4
6 584
5

Ответы 5

Посмотрите на config/packages/doctrine.yaml

 dir: '%kernel.project_dir%/src/Entity'

Это проблема. Каждый .orm.yml ищет на этом пути.

Этот вопрос будет отмечен как некачественный. Пожалуйста, предоставьте дополнительную информацию и формат.

Wahyu Kristianto 10.06.2018 12:40

вывести ошибку: Unrecognized option "dir" under "doctrine.orm" in ArrayNode.php line 311

ar099968 11.06.2018 08:53

сопоставления: Приложение: is_bundle: false тип: yml dir: префикс '% kernel.project_dir% / src / Entity': псевдоним 'App \ Entity': Приложение Есть ли у вас эти строки конфигурации в вашем doctrine.yaml? Если нет - попробуйте написать, пожалуйста

Stan 11.06.2018 23:04

У меня такая же ошибка, и исправление, которое я нахожу, заключается в добавлении repositoryClass ко всем моим объектам:

@ORM\Entity(repositoryClass = "App\Repository\DefaultRepository")

Окончательный код выглядит так:

/**
 * Key
 *
 * @ORM\Table(name = "`key`")
 * @ORM\Entity(repositoryClass = "App\Repository\DefaultRepository")
 */

Надеюсь, это поможет тебе

Внутри app/config/packages/doctrine.yaml

...
doctrine:

...

 orm:
        default_entity_manager: default
        auto_generate_proxy_classes: '%kernel.debug%'
        entity_managers:
            default:
                naming_strategy: doctrine.orm.naming_strategy.underscore
                connection: default


                #ADD THESE LINES AND CHANGE PATH IF NEEDED
                mappings:
                    App:
                        type: annotation
                        dir: '%kernel.project_dir%/src/Entity/'
                        prefix: 'App\Entity\'

Запускаем php bin/console make:entity --regenerate

Внутри классов сущностей убедитесь, что пространство имен хорошо написано следующим образом: namespace App\Entity

У меня была опечатка в моем пространстве имен (верхний регистр вместо нижнего)

Gardner 07.03.2021 13:58

В моем случае это произошло потому, что я написал:

php bin/console make:entity --regenerate App\Entity\Course

вместо (обратите внимание на двойную косую черту)

php bin/console make:entity --regenerate App\\Entity\\Course

У меня это сработало, но я подозреваю, что есть правильный способ назвать объект с помощью config/packages/doctrine.yaml.

juminet 15.04.2021 10:41

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