Sonata使用子字段上的聚合排序管理列表

时间:2016-05-31 15:07:02

标签: symfony sonata-admin symfony-sonata sonata

我正在使用奏鸣曲的管理员列表来显示项目表。每个项目都有许多项目站点,它们有5种不同的状态类型。状态类型1-4被认为是活动的而5是不活动的。

我希望能够通过其拥有的活动项目站点来订购我的项目列表。

我在Projects Entity上创建了一个方法,如下所示:

public function getActiveSitesCount()
{
  $activeSites = array_filter($this->sites->toArray(), function(ProjectSite $site) {
    return $site->getStatus() <= 4;
  });

  return count($activeSites);
}

当作为列添加到列表视图时,它返回正确数量的项目站点,但是当我将其添加到datagridValues时,它没有任何效果,例如:

protected $datagridValues = array(
  '_page' => 1,
  '_sort_order' => 'DESC',
  '_sort_by' => 'activeSitesCount'
);

我在_sort_by中尝试了不同的变体,例如getActiveSitesCount,但它似乎默认为id ASC

我还尝试在COUNT...ORDER BY函数中添加createQuery,它提供了相同的默认行为。

是否可以使用不是排序依据?

的字段的值

0 个答案:

没有答案