【发布时间】:2020-04-10 20:38:18
【问题描述】:
如何在后台添加按票数排序?
我有一个与一对多投票相关的提名实体。 我需要允许按被提名者的票数排序。
我从这里尝试一个解决方案: https://github.com/sonata-project/SonataAdminBundle/issues/1077 首先在这里: Sonata Admin Bundle: show total count of collection on list view
但我收到错误消息: [语义错误] 第 0 行,第 184 列靠近“v_id_count ASC”:错误:未定义“v_id_count”。
这是来自 NomineeAdmin 的代码:
public function createQuery($context = 'list')
{
$query = parent::createQuery($context);
if ('list' === $context) {
$parameters = $this->getFilterParameters();
if ('getVotesCount' === $parameters['_sort_by']) {
$rootAlias = $query->getRootAliases()[0];
$query
->addSelect('COUNT(v.id) as v_id_count')
->leftJoin($rootAlias . '. votes', 'v')
->groupBy($rootAlias . '.id')
->orderBy('v_id_count', $parameters['_sort_order']);
}
}
return $query;
}
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
//...
->add(
'getVotesCount',
null,
[
'sortable' => true,
'sort_field_mapping' => ['fieldName' => 'id'],
'sort_parent_association_mappings' => [],
]
);
}
【问题讨论】:
标签: symfony sonata-admin sonata symfony-sonata