我有一個關於庫問題的存儲庫:是否有可能在entityB的倉庫使用調用不同的版本庫的Symfony2
$em = $this->getDoctrine()
->getEntityManager();
$range = $em->getRepository('***Bundle:entityA')
->find($id);
????
我有一個關於庫問題的存儲庫:是否有可能在entityB的倉庫使用調用不同的版本庫的Symfony2
$em = $this->getDoctrine()
->getEntityManager();
$range = $em->getRepository('***Bundle:entityA')
->find($id);
????
在你的倉庫類,你已經可以訪問實體管理器,所以你只需要做:
$this->getEntityManager()->getRepository('***Bundle:entityA')->find($id)
我提出以下建議:
情況A: 您需要查詢2級的實體,沒有關係的對方。 使用2個庫,2查詢
$range1 = $em->getRepository('***Bundle:entityA')->find($id);
$range2 = $em->getRepository('***Bundle:entityB')->find($id);
案例B: 您需要查詢2級的實體,彼此相關,或視對方。 使用1庫,編寫自定義庫功能,加入他們的行列,或選擇多個表
$range = $em->getRepository('***Bundle:entityA')->findAjoinedB();
class EntityArepository extends EntityRepository
{
public function findAjoinedB(){
$qb = $this->createQueryBuilder('entityA')
->leftJoin('entityA.entityB_id', 'entityB')
->where(....
....;
return $qb->getQuery()->getResult();
}
}
如果您想了解更多注入依賴,聲明你的版本庫服務,讓你可以注入一個使用它的其他內部:
services.yml
services:
repository.entity_a:
class: AppBundle\Entity\EntityARepository
factory: [@doctrine, getRepository]
arguments:
- AppBundle::EntityA
repository.entity_b:
class: AppBundle\Entity\EntityBRepository
factory: [@doctrine, getRepository]
arguments:
- AppBundle::EntityB
calls:
- [setEntityARepository, [@repository.entity_a]]
在EntityBRepository.php中,您必須擁有一個setter(setEntityARepository)屬性來存儲存儲庫(即, $ entityARepository)。
我需要$ range = $ em-> getRepository('*** Bundle:entityA') - > find($ id);在entityB存儲庫中。 @DerStoffel – user2269869
爲了正確回答,我需要你的用例和實體關係。 – DerStoffel