symfony中的一个实体,两个存储库

lal*_*ala 7 symfony

我想为1个实体使用2个存储库.

原因是:我有2个捆绑包,两个捆绑包都使用相同的实体.我希望将两种功能分开.有时我需要特定的查询到bundle.

可以将1个存储库放入捆绑包中,将第二个存储库放在另一个存储库中吗?也许这是一种错误的方式?

如果有人有想法.

谢谢 !

Tom*_*uba 3

2019年更新

我会创建 2 个存储库。将所有方法添加到一个存储库是没有意义的,仅仅因为它们共享实体。通过这种方式,我们最终可以为每个存储库提供 30 个方法。

第一个存储库

namespace App\Repository;

use App\Entity\Post;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\EntityRepository;

final class FrontendPostRepository
{
    /**
     * @var EntityRepository
     */
    private $repository;

    public function __construct(EntityManagerInterface $entityManager)
    {
        $this->repository = $entityManager->getRepository(Post::class);
    }

    /**
     * @return Post[]
     */
    public function getAll(): array
    {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

...和第二个存储库

namespace App\Repository;

use App\Entity\Post;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\EntityRepository;

final class AdminPostRepository
{
    /**
     * @var EntityRepository
     */
    private $repository;

    public function __construct(EntityManagerInterface $entityManager)
    {
        $this->repository = $entityManager->getRepository(Post::class);
    }

    /**
     * @return Post[]
     */
    public function getUnpublished(): array
    {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)


您可以在How to use Repository with Doctrine as Service in Symfony帖子中阅读有关此概念及其原因的更多信息