我正在尝试显示实体列表视图的相关实体数,但是数量太多,因此它在实体中用完了内存(执行简单的count($this->relatedEntities)
)。
有人知道如何/在何处可以覆盖ListController
的{{1}}来添加一个带有方括号的QueryBuilder
列吗?
我尝试扩展COUNT()
并连接到AdminController
函数(以向每个对象手动添加计数),但这并没有给我实体列表,而是给了{{1} }对象。
答案 0 :(得分:0)
这是我的固定方法:
在自定义AdminController中覆盖renderTemplate:
protected function renderTemplate($actionName, $templatePath, array $parameters = array())
{
if ($actionName === 'list' && $this->entity['class'] === ClassA::class) {
//piggyback on virtual property 'count'
$parameters['fields']['count']['servicecounts'] = $this->MyEntityRepository->getCounts();
}
return $this->render($templatePath, $parameters);
}
easy_admin配置:
list:
fields:
- { property: 'count', template: 'count.html.twig' }
count.html.twig:
{{ field_options.servicecounts[item.id] }}
getCounts函数:
public function getCounts()
{
$qb = $this->getEntityManager()->createQueryBuilder();
$qb
->select('s.id, count(ce.recordId)')
->from(ClassA::class, 's')
->leftJoin(ClassB::class, 'ce', Join::WITH, 's.id = ce.service')
->groupBy('s.id')
;
$results = [];
foreach ($qb->getQuery()->execute() as $row) {
$results[$row['id']] = $row[1];
}
return $results;
}