2012-08-16 70 views
0

我有一個名爲鏈接包的包。現在我已經把所有的混合東西放在那裏,用在所有的包中。如何訪問存儲庫,如果沒有該名稱的實體Doctrine2 Symfony2

但我沒有任何實體稱爲鏈接。

我想創建LinkedRepository,這樣我就可以擁有我所有的常用功能。但是,我將如何在其他包中獲取該存儲庫。我的意思是如何調用這個

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

回答

1

您不能擁有單獨的存儲庫類。信息庫類鏈接到一個實體,所以你不能有一個「獨立的」信息庫,但我可以看到兩個選項:

  1. 子類EntityRepository並將其命名爲LinkedRepository,在這裏你可以添加你的常用方法。所有的定製Repository類都必須繼承LinkedRepository類的子類。如果你想在你的所有實體的Repository實例中使用這些通用的功能,但是你不需要一個自定義的Repository類,你可以聲明LinkedRepository類爲Entity的repositoryClass @ORM\Entity(repositoryClass="Acme\LinkedBundle\Repository\LinkedRepository"),假設你的Bundle裏的Repository文件夾中有你的Repository類,並用Acme替換你的公司名稱。
  2. 創建一個service並在其中添加您的通用功能。

我想第一個比較容易。

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'); 
} 

希望這個作品獲得控制器的服務。

相關問題