如何使用简单的管理对列表中的多个字段进行排序?

Posted

技术标签:

【中文标题】如何使用简单的管理对列表中的多个字段进行排序?【英文标题】:How to sort on multiple field inside a list with easy admin? 【发布时间】:2019-10-21 23:30:57 【问题描述】:

通过简单的管理,您可以对列表的一个字段进行排序。Symfony - Easy Admin v2: Sorting Entity Listings 但是有什么方法可以对我的列表中的多个字段进行排序?

【问题讨论】:

【参考方案1】:

您可以覆盖createListQueryBuildercreateSearchQueryBuilder,如here 所述。

例子:

protected function createListQueryBuilder($entityClass, $sortDirection, $sortField = null, $dqlFilter = null)

    /* @var EntityManager */
    $em = $this->getDoctrine()->getManagerForClass($this->entity['class']);

    /* @var QueryBuilder */
    $queryBuilder = $em->createQueryBuilder()
        ->select('entity')
        ->from($this->entity['class'], 'entity')
        ;

    if (!empty($dqlFilter)) 
        $queryBuilder->andWhere($dqlFilter);
    

    $queryBuilder->addOrderBy('entity.status', 'ASC');
    $queryBuilder->addOrderBy('entity.createdAt', 'DESC');

    return $queryBuilder;

【讨论】:

感谢您的回答。我所做的唯一更改是将$queryBuilder->addOrderBy() 语句包含在if ... 中,以避免在没有给定实体属性的实体上出现异常。用例是按姓氏、名字排序,这仅出现在用户实体中。

以上是关于如何使用简单的管理对列表中的多个字段进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

应该如何对列表中的项目进行重新排序,并更新多个对象,如何使用 GraphQL 突变进行持久化?

如何按日期(createdAt)对aws-amplify中列表查询中的字段进行排序?

如何按多个字段对对象数组进行排序?

如何使用异常条件对多个字段进行排序

如何按 Grails 中的多个字段排序?

如何使用多个排序标准对 ArrayList 进行排序?