Symfony5/Doctrine 找不到我的实体的 XML 映射文件

Symfony5/Doctrine can't find my XML mapping file for my entity

我目前正在尝试使用 Doctrine 和 XML 映射从头开始建立一个 Symfony 5 项目。

我用一些实体创建了一个简单的 AppBundle。尝试生成迁移后,出现此错误:

No mapping file found named 'User.orm.xml' for class 'App\Entity\User\User'.

快速 google 搜索告诉我它可能与注释冲突(我不使用并且找不到任何事件)。

我觉得我错过了一些非常简单的东西,我需要帮助。

我的实体:

<?php
namespace App\Entity\User;

final class User implements UserInterface
{
use IdentifiableTrait;

private string $name;

private Collection $tasks;

public function __construct()
{
    $this->tasks = new ArrayCollection();
}

public function getName(): string
{
    return $this->name;
}

public function setName(string $name): UserInterface
{
    $this->name = $name;

    return $this;
}

public function getTasks(): Collection
{
    return $this->tasks;
}

public function addTask(TaskInterface $task): UserInterface
{
    if (!$this->tasks->contains($task)) {
        $this->tasks->add($task);
        $task->setUser($this);
    }

    return $this;
}

public function removeTask(TaskInterface $task): UserInterface
{
    if ($this->tasks->contains($task)) {
        $this->tasks->removeElement($task);
    }

    return $this;
}
}

我的User.orm.xml文件(位置:config/doctrine/User/):

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

   <entity name="App\Entity\User\User" table="users">
       <id name="id" type="integer" column="id"/>
       <field name="name" column="name"/>
   </entity>

</doctrine-mapping>

我的 config/packages/doctrine.yaml 文件:

doctrine:
dbal:
    url: '%env(resolve:DATABASE_URL)%'

orm:
    mappings:
        App:
            is_bundle: false
            type: xml
            dir: '%kernel.project_dir%/config/doctrine'

我真的不明白我错过了什么。

此致, 牟科

编辑:阅读@cerad 评论后,我决定删除捆绑部分,只使用 SF5 新文件架构。问题仍然存在。请注意,如果我更改 User.orm.xml 的名称(例如,user.orm.xml),它会检测到它并根据名称更改错误(user.orm.xml 的大小写不匹配)

找到问题。

首先,感谢@cerad 关于捆绑包的建议。

关于我的问题,我想将我的实体分类到子文件夹中:Entity/User/User.php。该子文件夹是问题所在。我一删除它(class 和 orm.xml 文件),它就起作用了。

谢谢大家

我通过在配置中添加另一个 'prefix' 密钥来在我的项目中修复它。

示例

prefix: 'App\Account\Domain'