如果没有该名称的实体,我如何访问存储库 Doctrine2 Symfony2.


How can I access the repository if don't have entity for that name Doctrine2 Symfony2

我有一个叫做链接捆绑包的捆绑包。现在我已经把所有混合的东西都放在那里,用于所有捆绑包。

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

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

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

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

  1. 子类 EntityRepository 并将其命名为 LinkedRepository,在这里您可以添加常用方法。所有自定义存储库类都必须对 LinkedRepository 类进行子类化。如果您希望在所有实体的存储库实例中具有通用功能,但不需要自定义存储库类,则可以将 LinkedRepository 类声明为实体的存储库类@ORM'Entity(repositoryClass="Acme'LinkedBundle'Repository'LinkedRepository")假设您的存储库类位于捆绑包内的存储库文件夹中,并将 Acme 替换为您的公司名称。
  2. 创建一个服务并在其中添加您的常用功能。

我想第一个更容易。

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

这是它的文献展: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');
}

希望这有效。