我想知道如何获得通用的
EntityRepository
,因为我需要以动态方式处理许多实体,并且在services.xml
文件中硬编码实体注入是不可行的。
在基于 vue.js 的后端中,可以使用实体名称作为参数来查询
EntityRepository
。如果可能的话,这是我首选的 PHP 实现方式。
当然,我可以直接使用原始 SQL 查询来完成此操作,而且速度会快得多,而且差别不大。但是,我真的更喜欢使用 DAL。
您可以注入
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']);
}
}
必须这样做(通常)会表明您的应用程序中还有其他设计不佳的地方,但如果您真的想这样做,这是一种简单的方法。