我刚刚开始使用symfony2,我希望获得一个已注册实体的列表,以便在两个字段标题和描述中进行搜索。
我有多个Entities
以及多个Admins
,其中一些是使用 Symfony:Media 进行映射的
单捆( FrontBundle )。
捆绑实体结构。
FrontBundle
->Pages(Entity)
->Menus(Entity)
->Testimonials.(Entity)
此外,我不想每次都致电getRepository($entity)
,因为它会运行多个查询。
有关最佳方法的任何想法吗?
答案 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);
}
如果您的项目结构是标准的,那么这一切都应该没有问题。