Doctrine 不会为新实体生成迁移

Doctrine won't generate migration for new entity

美好的一天, 我创建了新实体:

    <?php
    
    namespace Inveocz\CMS\Entity;
    
    class BannerCategory implements BannerCategoryInterface
    {
        
        /** @var int|null */
        protected $id;
    
        /** @return int|null */
        public function getId(): ?int
        {
            return $this->id;
        }
    }

和xml映射:

<?xml version="1.0" encoding="UTF-8"?>

<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xmlns:gedmo="http://gediminasm.org/schemas/orm/doctrine-extensions-mapping"
                  xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
                                      http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">

    <mapped-superclass name="Inveocz\CMS\Entity\BannerCategory" table="inveocz_cms_banner_category">
        <id name="id" column="id" type="integer">
            <generator strategy="AUTO"/>
        </id>
    </mapped-superclass>
</doctrine-mapping>

有问题,该学说已经注册了这个新实体,但是 运行ning

    doctrine:migration:diff

不会在我的项目中生成任何新的迁移。在此之前为任何其他实体生成它都很好。 还有当我 运行:

    doctrine:schema:validate

架构和映射均有效。 相同于:

    doctrine:mapping:info

会告诉我我的“Inveocz\CMS\Entity\BannerCategory”是按学说注册的。

Symfony:4.4.18

PHP: 7.4.9

doctrine.yaml:

    doctrine:
        dbal:
            driver: 'pdo_mysql'
            server_version: '5.7'
            charset: UTF8
    
            url: '%env(resolve:DATABASE_URL)%'
        orm:
            auto_generate_proxy_classes: '%kernel.debug%'
            auto_mapping: true
            mappings:
                App:
                    is_bundle: false
                    type: xml
                    dir: '%kernel.project_dir%/src/Resources/config/doctrine/model'
                    prefix: 'App\Entity'
                    alias: App
    
            dql:
                datetime_functions:
                    date: DoctrineExtensions\Query\Mysql\Date
                    month: DoctrineExtensions\Query\Mysql\Month
                    year: DoctrineExtensions\Query\Mysql\Year
                numeric_functions:
                    round: DoctrineExtensions\Query\Mysql\Round

运行:

    doctrine:cache:clear-metadata

无济于事,丢弃我的 docker 容器也无济于事。 谁能给我提示可能出了什么问题? 非常感谢任何帮助

您的 XML 将您的实体映射为 映射的超类 。这不是真正存在于数据库中的实体,只能被其他人继承

使用这个 XML 映射来映射可以持久化并从数据库中检索的实体:

<doctrine-mapping>
  <entity name="Inveocz\CMS\Entity\BannerCategory" table="inveocz_cms_banner_category">
     <id name="id" column="id" type="integer">
         <generator strategy="AUTO"/>
     </id>
  </entity>
</doctrine-mapping>

来源:https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/inheritance-mapping.html