Doctrine获取带有关联的所有字段名称

时间:2014-04-16 13:21:27

标签: php symfony doctrine-orm doctrine

我已经知道如何获取实体的字段名称,但是如何获取所有关联的类名?

$em->getClassMetadata('Product')->getFieldNames();

这只获取类属性,但我希望在嵌套数组中获取关联名称,例如,如果我有与产品关联的客户,我也想获得所有客户类属性名称。

4 个答案:

答案 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)

我最终将它们合并到一个数组中,首先获取每个关联名称,然后获取每个名称的字段名称。