如何在symfony2中获取已注册实体的列表

时间:2015-12-27 13:53:30

标签: php entity-framework symfony

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

我有多个Entities以及多个Admins,其中一些是使用 Symfony:Media 进行映射的 单捆( FrontBundle )。

  

捆绑实体结构。

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

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

有关最佳方法的任何想法吗?

1 个答案:

答案 0 :(得分:3)

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

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

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