2011-11-29 66 views

回答

8

一般來說,沒有什麼區別,因爲

$this->getDoctrine()->getRepository(); 

僅僅是

$this->getDoctrine()->getEntityManager()->getRepository(); 

幫手可以有多個實體管理器,然後會有一個細微的差別,從得到一個存儲庫一個:

$this->getDoctrine()->getRepository($entityName, $enityManagerName); 
$this->getDoctrine()->getEntityManager($entityManagerName)->getRepository($entityName); 

但是,再次,你會得到的結果沒有什麼不同。

其他所有事情都是平等的,我會用最短的一個去。

1

的結果是一樣的,但是如果你需要EntityManager的超過剛開存儲庫,它可能是很方便的存儲,然後收到信息庫以及其他操作,如沖洗:

$_em = $this->getDoctrine()->getEntityManager(); 
$repository = $_em->getRepository(); 
//... 
$_em->flush(); 

如前所述,如果您只需要獲取存儲庫,請使用第二條語句,該條語句比第一條語句簡短易讀。

1

沒有區別。如果你看一下AbstractManagerRegistry.php的源代碼。你可以看到這個代碼:

public function getRepository($persistentObjectName, $persistentManagerName = null) 
{ 
    return $this->getManager($persistentManagerName)->getRepository($persistentObjectName); 
} 

正如你所看到的,當你調用getRepository(),它首先調用getManager(),然後getRepository()。我建議使用第二個,因爲它可以在IDE(如PHPStorm)中提供智能感知。希望能幫助到你。