我有一个叫做链接捆绑包的捆绑包。现在我已经把所有混合的东西都放在那里,用于所有捆绑包。
但是我没有任何名为Linked的实体。
我想创建LinkedRepository,这样我就可以在那里拥有我的所有通用功能。但是我将如何在其他捆绑包中获取该存储库。我的意思是怎么称呼这个
$repository = $em->getRepository('LinkedBundle:"*What should I write here*"');
您不能有单独的存储库类。存储库类链接到实体,因此您不能拥有"独立"存储库,但我可以看到两个选项:
- 子类 EntityRepository 并将其命名为 LinkedRepository,在这里您可以添加常用方法。所有自定义存储库类都必须对 LinkedRepository 类进行子类化。如果您希望在所有实体的存储库实例中具有通用功能,但不需要自定义存储库类,则可以将 LinkedRepository 类声明为实体的存储库类
@ORM'Entity(repositoryClass="Acme'LinkedBundle'Repository'LinkedRepository")
假设您的存储库类位于捆绑包内的存储库文件夹中,并将 Acme 替换为您的公司名称。 - 创建一个服务并在其中添加您的常用功能。
我想第一个更容易。
我认为这是不可能的,因为你打算这样做。但我建议使用服务容器而不是存储库。在此服务容器中,您可以使用不同的存储库,您需要将这些存储库用于这些全局任务。服务容器也可以在每个控制器等中访问。
这是它的文献展: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');
}
希望这有效。