如何为 Symfony 实体定义默认实体管理器

How to define default Entity Manager for Symfony Entities

我正在设置一个包含多个数据库的应用程序,每个数据库都有自己的实体管理器。

当我查询数据并为实体指定实体管理器时,它工作正常。

我无法创建具有关系的表单(两个实体使用相同的实体管理器)。

我在尝试呈现表单以创建新实体时收到以下错误

[Semantical Error] Couldn't find constant App\Repository\Admin\Item\ItemsRepository, class App\Entity\Item\Items.

// App/Entity/Item/Items.php
/**
 * Items
 *
 * @ORM\Entity(repositoryClass=App\Repository\Admin\Item\ItemsRepository)
 * @ORM\Table(name="items")
 * @ORM\Entity
 */
class Items
{
....
}
// App/Repository/Item/ItemsRepository.php
namespace App\Repository\Admin\Item;

use App\Entity\Item\Items;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;

/**
 * @method Items|null find($id, $lockMode = null, $lockVersion = null)
 * @method Items|null findOneBy(array $criteria, array $orderBy = null)
 * @method Items[]    findAll()
 * @method Items[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
 */
class ItemsRepository extends ServiceEntityRepository
{
...
}
#config/package/doctrine.yaml   
    orm:
        default_entity_manager: default
        entity_managers:
            default:
                connection: default
                mappings:
                    App:
                        is_bundle: false
                        type: annotation
                        dir: '%kernel.project_dir%/src/Entity/Default'
                        prefix: 'App\Entity\Default'
            item_service:
                connection: item_service
                mappings:
                    ItemAlias:
                        is_bundle: false
                        type: annotation
                        dir: '%kernel.project_dir%/src/Entity/Item'
                        prefix: 'App\Entity\Item'
                        alias: ItemAlias

整体文件结构:

src
  Controller
    Admin
      Item
        UnitConversionsController.php
  Entity
    Item
      Items.php
  Repository
    Admin
      Item
        ItemsRepository.php

如果有一种方法可以手动定义类型 class 用来提取相关数据以填充表单的实体管理器,我会很高兴。

如何让 symfony 识别实体目录的默认实体管理器?

错误提到了一个常量,这似乎是一个线索。引用 FQCN 所以它是一个字符串:

repositoryClass="App\Repository\Admin\Item\ItemsRepository"