gpt4 book ai didi

php - 我可以在 Doctrine2 中迭代实体的属性吗?

转载 作者:可可西里 更新时间:2023-11-01 12:26:40 25 4
gpt4 key购买 nike

我用

$myblogrepo = $this->_doctrine->getRepository('Entities\Blog')->findBy(array('id' => 12);

我通过

访问
foreach($myblogrepo as $key =>$value){

echo $key . $value;

}

如何获取字段名称?我认为 key => 可以工作,但它打印 s key 为 0

所以我认为这会起作用:

foreach($myblogrepo[0] as $key =>$value){

echo $key . $value;
}

可是什么都没有

最佳答案

很可能,您的博客实体的属性被声明为protected。这就是为什么您不能从实体本身外部迭代它们的原因。

如果您以只读方式使用博客实体,并且只需要访问标记为@Columns 的属性(阅读:您不需要在实体上调用任何方法),您可以考虑使用阵列水化。这样你就可以处理简单的数组,$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 - 我还没有玩过它,但它看起来很有前途。

关于php - 我可以在 Doctrine2 中迭代实体的属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7093515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com