我如何在 symfony2 中获得注册实体的列表

Nom*_*man 2 php entity-framework symfony

我刚刚开始使用 symfony2,我想获得一个已注册实体的列表,以便在titledescription两个字段中进行搜索。

我有多个Entities以及多个Admins,其中一些映射到Symfony : 单个捆绑中的媒体FrontBundle)。

与实体结构捆绑。

FrontBundle
    ->Pages(Entity)
    ->Menus(Entity)
    ->Testimonials.(Entity)
Run Code Online (Sandbox Code Playgroud)

另外我不想getRepository($entity)每次都打电话,因为它会运行多个查询。

关于做到这一点的最佳方法的任何想法?

AJ *_*eti 7

要获取所有映射实体,我建议使用实体管理器:

$em = $this->getDoctrine()->getManager();
$entities = $em->getConfiguration()->getMetadataDriverImpl()->getAllClassNames();
Run Code Online (Sandbox Code Playgroud)

这应该为您提供实体的完整类名列表。
至于使用getRepository($entity)它是不可能的,但是您可以使用实体管理器来获取快捷方式名称,或者创建一个小助手函数来这样做,例如:

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

    return implode('', $parts);
}
Run Code Online (Sandbox Code Playgroud)

结合实体管理器为您提供的实体类列表应该可以工作:

foreach ($entities as $className) {
    $shortcut = $this->convertClassNameToShortcutNotations($className);
}
Run Code Online (Sandbox Code Playgroud)

如果您的项目结构是标准的,那么这一切都应该没有问题。