2015-12-27 78 views
0

我使用Symfony2的剛剛開始,我想獲得註冊的實體列表中兩個字段冠軍描述進行搜索。如何獲得註冊的實體列表中的Symfony2

我多Entities以及多個Admins,他們中的一些映射與的Symfony:媒體 單束(FrontBundle)。

具有實體的結構結構。

FrontBundle 
    ->Pages(Entity) 
    ->Menus(Entity) 
    ->Testimonials.(Entity) 

此外,我不想叫getRepository($entity)每次因爲它將運行的多個查詢。

有關最佳方法的任何想法?

回答

1

讓所有的映射實體,我建議使用實體管理器:

$em = $this->getDoctrine()->getManager(); 
$entities = $em->getConfiguration()->getMetadataDriverImpl()->getAllClassNames(); 

這應該給你完整的類名的列表,你的實體。
至於使用getRepository($entity)這是不完全可能的,但你可以使用實體管理器,以獲得快捷方式的名稱,或創建一個小助手功能,這樣做,如:

public function convertClassNameToShortcutNotations($className) 
{ 
    $cleanClassName = str_replace('\\Entity', '\:', $className); 
    $parts = explode('\\', $cleanClassName); 

    return implode('', $parts); 
} 

這與實體類的合成列表實體管理器給你應該工作:

foreach ($entities as $className) { 
    $shortcut = $this->convertClassNameToShortcutNotations($className); 
} 

前提是你的項目結構是標準的,這應該沒有問題,所有的工作。

相關問題