0

我有一个叫做 Linked Bundle 的包。现在我已经把所有混合的东西都放在那里了,这些东西在所有捆绑包中都使用了。

但我没有任何名为 Linked 的实体。

我想创建 LinkedRepository 以便我可以在那里拥有所有常用功能。但是我将如何在其他捆绑包中获取该存储库。我的意思是如何称呼这个

$repository = $em->getRepository('LinkedBundle:"*What should I write here*"');
4

2 回答 2

1

我认为这是不可能的,因为你打算这样做。但我建议使用服务容器而不是存储库。在此服务容器中,您可以使用不同的存储库,这些存储库需要用于这些全局任务。服务容器也可以在每个控制器等中访问。

这是它的 Documentatino:http ://symfony.com/doc/current/book/service_container.html 我认为您不需要整个注入部分。只需定义一个服务:

services:
    linked_service:
        class: Acme\LinkedBundleBundle\Service\LinkedService

然后通过

public function indexAction()
{
    $service = $this->get('linked_service');
}

希望这有效。

于 2012-08-16T07:16:49.930 回答
1

您不能拥有单独的存储库类。存储库类链接到实体,因此您不能拥有“独立”存储库,但我可以看到两个选项:

  1. 子类 EntityRepository 并将其命名为 LinkedRepository,您可以在此处添加常用方法。您所有的自定义 Repository 类都必须继承您的 LinkedRepository 类。如果您希望在所有实体的 Repository 实例中使用该通用功能,但不需要自定义 Repository 类,则可以将 LinkedRepository 类声明为实体的 repositoryClass@ORM\Entity(repositoryClass="Acme\LinkedBundle\Repository\LinkedRepository")假设您的 Repository 类在您的 Bundle 内的 Repository 文件夹中,并将 Acme 替换为您的公司名。
  2. 创建一个服务并在其中添加您的常用功能。

我想第一个更容易。

于 2012-08-16T07:23:14.393 回答