Search code examples
symfonydoctrine-ormeasyadmin

How to sort on multiple field inside a list with easy admin?


With easy admin you have the possibility to sort on one field for a list.
Symfony - Easy Admin v2: Sorting Entity Listings
But is there any way to sort on more than one field for my list ?


Solution

  • You can do it overriding createListQueryBuilder or createSearchQueryBuilder as mentioned here.

    Example:

    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;
    }