我已经知道如何获取实体的字段名称,但是如何获取所有关联的类名?
$em->getClassMetadata('Product')->getFieldNames();
这只获取类属性,但我希望在嵌套数组中获取关联名称,例如,如果我有与产品关联的客户,我也想获得所有客户类属性名称。
答案 0 :(得分:13)
您也可以获取相关的字段名称,然后合并它们
$properties = $em->getClassMetadata('YourBundle:Product')->getFieldNames();
$output = array_merge(
$properties,
$em->getClassMetadata('YourBundle:Product')->getAssociationNames()
);
答案 1 :(得分:2)
一个班轮:
array_keys($entityManager->getMetadataFactory()->getMetadataFor($entity)->reflFields)
答案 2 :(得分:0)
只是一点点暗示。
我更希望重新组织您的架构,以便正确检索所有相关字段。例如,根据您的问题的这一行“如果我有客户与产品相关联”,我相信您在客户和产品之间至少有一对一或一对多的关系。如果在ORM中声明这些关系,如果使用YAML或注释或任何首选/让步方式,则可以使用标准DQL查询/或获取方法检索字段名称。
从这里可以看出,当您希望检索关联字段时,最好通过在第一时间提供相关关系来建立可靠的数据库模式。这将使您必须完成的工作减少一半,并且从长远来看将提高系统/编码实践的性能。
希望这有帮助, 干杯!
答案 3 :(得分:0)
我最终将它们合并到一个数组中,首先获取每个关联名称,然后获取每个名称的字段名称。