Doctrine为同一个实体的许多存储库

Cha*_*les 4 entity doctrine repository

是否有可能为同一个实体拥有两个存储库?

我尝试这样的东西,但它不起作用..

class PackageRepository extends EntityRepository
{
    public function __construct($em, Mapping\ClassMetadata $class)
    {
        $cmf = $em->getMetadataFactory();
        $class = $cmf->getMetadataFor('Product');
        parent::__construct($em, $class);
    }
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?

Zol*_*aKt 5

首先,你为什么要这样做?

第二,回答你的问题.你可以拥有尽可能多的存储库来处理相同的实体,毕竟它们只是简单的类.

但是,您可以使用@Repository批注(或YAML或XML,无论如何)仅将一个类与实体类链接.所有映射数据都存储在EntityManager中.EntityManager只知道一个存储库类与实体类链接,如果你尝试使用$entity->getReposiotry()或类似它,它将只返回链接类.

但是没有什么可以阻止你创建自己的类来执行某些查询并直接显式地调用它们,而不依赖于EntityManagers存储库映射.

  • 我实际上想知道,在管理相同实体的特定于管理方法和操作的存储库和特定于前端方法和操作的存储库的情况下。太糟糕了,无法根据访问路径指定可以使用哪个存储库。 (2认同)