如何在 Shopware 6 中注入通用 EntityRepository?

问题描述 投票:0回答:1

我想知道如何获得通用的

EntityRepository
,因为我需要以动态方式处理许多实体,并且在
services.xml
文件中硬编码实体注入是不可行的。

在基于 vue.js 的后端中,可以使用实体名称作为参数来查询

EntityRepository
。如果可能的话,这是我首选的 PHP 实现方式。

当然,我可以直接使用原始 SQL 查询来完成此操作,而且速度会快得多,而且差别不大。但是,我真的更喜欢使用 DAL。

symfony doctrine-orm doctrine shopware shopware6
1个回答
0
投票

您可以注入

EntityManagerInterface
并从那里获取具体存储库:

use Doctrine\ORM\EntityManagerInterface;
use App\Entity\FooEntity;

class FooWhatever
{
    function __construct(private readonly EntityManagerInterface $entityManager)
    {}

    public function foo()
    {
        $fooRepository = $this->entityManager->getRepository(FooEntity:class);
        
        $maybeFoo = $fooRepository->findOneBy(['some' => 'criteria']);
    }
}

必须这样做(通常)会表明您的应用程序中还有其他设计不佳的地方,但如果您真的想这样做,这是一种简单的方法。

© www.soinside.com 2019 - 2024. All rights reserved.