php – 我可以迭代Doctrine2中的Entity属性吗?
发布时间:2020-12-13 18:24:03 所属栏目:PHP教程 来源:网络整理
导读:我用 $myblogrepo = $this-_doctrine-getRepository('EntitiesBlog')-findBy(array('id' = 12); 我通过访问 foreach($myblogrepo as $key =$value){echo $key . $value;} 我怎样才能获得字段名称?我认为关键=会工作,但它打印键为0 所以我认为这会奏效: fo
我用
$myblogrepo = $this->_doctrine->getRepository('EntitiesBlog')->findBy(array('id' => 12); 我通过访问 foreach($myblogrepo as $key =>$value){ echo $key . $value; } 我怎样才能获得字段名称?我认为关键=>会工作,但它打印键为0 所以我认为这会奏效: foreach($myblogrepo[0] as $key =>$value){ echo $key . $value; } 但仍然没有..
很可能,您的Blog实体的属性被声明为受保护.这就是为什么你不能从实体本身外部迭代它们的原因.
如果您以只读方式使用Blog实体,并且只需要访问标记为@Columns的属性(读取:您不需要调用实体上的任何方法),您可以考虑使用array-hydration .这样你就可以处理简单的数组了,$k => $v类型的迭代也可以正常工作. 否则,您需要在实体类上创建某种getValues()方法.这可能是一个简单的实现,只需构建和数组并返回它. 最后,您可以创建一个通用的getValues()作为实用程序函数,该函数使用doctrine的类元数据来确定列和实体具有哪些内容,并对这些数据进行操作.像这样的简单实现: function getEntityColumnValues($entity,$em){ $cols = $em->getClassMetadata(get_class($entity))->getColumnNames(); $values = array(); foreach($cols as $col){ $getter = 'get'.ucfirst($col); $values[$col] = $entity->$getter(); } return $values; } 编辑 – 上述方法的一个更成熟的版本似乎是available here – 我还没有使用它,但它看起来很有希望. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |