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
美好的一天, 我创建了新实体:
<?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