Php 获取具有关联的所有字段名

Php 获取具有关联的所有字段名,php,symfony,doctrine-orm,doctrine,Php,Symfony,Doctrine Orm,Doctrine,我已经知道如何获取实体的字段名,但是如何获取所有关联的类名呢 $em->getClassMetadata('Product')->getFieldNames(); 这只获取类属性,但我希望在嵌套数组中获取关联名称,例如,如果我将客户关联到产品,我也希望获取所有客户类属性名称。您也可以获取关联的字段名称,然后合并它们 $properties = $em->getClassMetadata('YourBundle:Product')->getFieldNames(); $o

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

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

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

您也可以获取关联的字段名称,然后合并它们

$properties = $em->getClassMetadata('YourBundle:Product')->getFieldNames();
$output = array_merge(
              $properties, 
              $em->getClassMetadata('YourBundle:Product')->getAssociationNames()
);
只是一点提示

我更喜欢重新组织架构的方式,以便正确检索所有相关字段。例如,根据您的问题“如果我有客户与产品关联”,我相信客户与产品之间至少存在一对一或一对多的关系。如果您在ORM中声明这些关系,如果您使用YAML或注释或任何首选/让路,您将能够使用标准DQL查询/或get方法检索字段名

这里的要点是,当您希望检索关联字段时,最好首先通过提供相关关系来建立可靠的数据库模式。从长远来看,这将使您必须完成的工作减少一半,并将提高系统/编码实践的性能

希望这有帮助,
干杯

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

一行:

array_keys($entityManager->getMetadataFactory()->getMetadataFor($entity)->reflFields)

你不能迭代给定的关联并请求它们的元数据吗?