gpt4 book ai didi

php - 使用 Doctrine ORM : Custom repository

转载 作者:可可西里 更新时间:2023-10-31 23:09:57 25 4
gpt4 key购买 nike

我有大约 10 个实体:\App\Entity\User,\App\Entity\Group, ...

对于它们中的每一个都有自己的存储库:\App\Repository\UserRepository,...在十几种方法中的每一种中。

访问方法在 Doctrine 中:

$userRepository = $em->getRepository('App\Entity\User');

但是,这并不方便,因为丢失了代码补全。

问题:如何在不增加静态连接代码的情况下组织与存储库的工作?我应该使用静态方法 get 吗?

class UserRepository extends EntityRepository
{
/**
* @static
* @return \App\Repository\UserRepository
*/
public static function get ()
{
$em = \Registry::getInstance()->get('em');
return $em->getRepository('App\Entity\User');
}
}

我看到实现了与交​​响乐的 Doctrine 一起工作,但代码完成也存在同样的问题。

最佳答案

我认为对此没有任何完全干净的解决方案。

您的选择基本上归结为两个:

  • 展示时的静态 setter/getter 。 问题:难以进行单元测试,隐藏了对 Registry 类之类的依赖项,需要手动添加它们
  • 使用某种带有 setter/getter 的工厂。 问题:需要手动添加工厂方法

我真的不认为这有什么大不了的。无论如何,存储库通常没有那么多方法,所以不难记住(或检查)

但是,您还可以尝试的一件事是:

/* @var My\Repository\FooRepository */
$repo = $em->getRepository('My\Repository\FooRepository');

这应该会在大多数 IDE 中激活 $repo 的完成。它仍然需要一些额外的输入。

关于php - 使用 Doctrine ORM : Custom repository,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7144932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com