获取Doctrine关联映射

时间:2013-05-21 15:10:09

标签: php symfony doctrine-orm doctrine

我的电话如下:

$foo = $em->getRepository('MyBundle:Bar')->find($id);

我希望能够遍历返回$ foo的所有列/值对。我发现在大多数情况下,以下调用会获取我想要的信息:

public function getEntityColumnValues($entity, $em){
  $cols = $em->getClassMetadata(get_class($entity))->getColumnNames();
  $values = array();
  foreach($cols as $col){
    $getter = 'get' . $this->underscoreToCamelCase($col, true);
    $values[$col] = $entity->$getter();
  }
  return $values;
}

但是,有时,实体包含一些仅作为学说关联映射存在的信息。该信息最终没有设置为$值。有没有办法循环遍历$ foo中设置的值而不通过我的getEntityColumnValues()函数获取类元数据?也许有一种方法可以增强我的功能来获得这些映射?感谢。

1 个答案:

答案 0 :(得分:1)

你是正确的方式。 $em->getClassMetadata(get_class($entity))为您提供了ClassMetadata以及您可能需要的所有getter(例如getAssociationMappings)。只需要look at them并随意体验。