【发布时间】:2015-08-20 15:33:44
【问题描述】:
使用后:
$queryResult =
$this
->getDoctrine()
->getRepository('EtecsaAppBundle:Paralizacion')
->createQueryBuilder('e')
->getQuery();
->setDQL($myOwnQuery)
->getResult();
我有一个实体数组,我想使用它们的所有属性获取器。我这样做是这样的:
foreach ($queryResult as $index => $itemEntity)
{
$objWorksheet->SetCellValue('A'. ($index + 17 ), $index + 1);
// ... The itemEntity class has entity relationships associations
$objWorksheet->SetCellValue('B'. ($index + 17 ), $itemEntity->getSomeRelatedProperty()->getSomeProperty());
// ... it also has properties with several types (date, string, etc)
$objWorksheet->SetCellValue('C'. ($index + 17 ), $itemEntity->getSomeProperty));
// Also some of the values obtained from his respective getter require some processing
$objWorksheet->SetCellValue('D'. ($index + 17 ), getProcessedValue($itemEntity->getSomeSpecificProperty));
}
SetCellValue 函数中使用的字母也会增加。我以此为例。 有没有办法动态调用实体的所有getter,就不用一一调用了?例如这样的事情:
foreach ($queryResult as $index => $itemEntity)
{
$columnLetter = 'A';
$objWorksheet->SetCellValue($columnLetter++ . ($index + 17 ), $index + 1);
arrayOfGetters = getArrayOfGetters(itemEntity);
foreach (arrayOfGetters as $getterMethod)
{
// properties that reference an entity relationship association would have the __ToString function
$objWorksheet->SetCellValue($columnLetter++ . ($index + 17 ), /* get value of getterMethod */);
}
}
【问题讨论】:
-
问题是?
-
@JovanPerovic 对不起...我要求一种方法来动态调用实体的所有 getter,所以我不必一个一个调用它们
-
我认为人们对您的问题投了反对票,因为它有点含糊。我认为根据标题(因此我提交的答案),您问题的症结很清楚,但是以下“SetCellValue 函数中使用的字母也会增加”是问题的一部分吗?如果是这样,请澄清,我会尝试相应地更新我的答案。
-
感谢@Darragh 的回答,我刚刚更新了我的问题,以显示我想要在这里实现的目标。我想我可以很好地利用你的答案。
标签: php symfony dynamic call getter