2016-12-13 3 views
1

Symfony2 Когда дело не работает.Symfony2 Orderby заданное значение поля

Хочет Сортировку по определенному значению поля первого

$query->select('s.firstName as first_name,s.lastName as last_name,sts.name as status_name') 
      ->leftJoin('s.studentStatus', 'sts') 
      ->where($query->expr()->orx(
       $query->expr()->like('s.internalId', ':internalId'), 
      )) 
      ->addSelect('(CASE WHEN s.storeID = :location THEN 1 else 2) AS HIDDEN storeOrder') 
      ->setParameter('internalId', "%{$internalId}") 
      ->setParameter('location', "{$location}") 
      ->orderBy('storeOrder', 'ASC') 
      ->setMaxResults((int) $limit); 

Хочет заказать на колонке конкретного значения первым, другие значения приходят после этого. У меня есть SQL-запрос, но он не работает с ниже Синтаксисом

ответ

0

Конструкция СЛУЧАЯ является конкретным поставщиком и не является частью доктрины 2 по умолчанию. Однако вы можете взглянуть на DoctrineExtensions. Вы можете использовать функцию IfElse для вашего варианта использования.

0

Вы можете добавить скрытое поле storeOrder то порядок на этом поле:

$query->select('s.firstName as first_name,s.lastName as last_name,sts.name as status_name') 
      ->leftJoin('s.studentStatus', 'sts') 
      ->where($query->expr()->orx(
       $query->expr()->like('s.internalId', ':internalId'), 
      )) 
      ->addSelect('(CASE WHEN s.storeID = :location THEN 1 else 2) AS HIDDEN storeOrder') 
      ->setParameter('name', "%{$term}%") 
      ->setParameter('internalId', "%{$internalId}") 
      ->setParameter('location', "{$location}") 
      ->orderBy('storeOrder', 'ASC') 
      ->setMaxResults((int) $limit); 
+0

Должен ли я использовать расширение, знаете ли вы процесс расширения использования в репозитории, можете ли вы обмениваться информацией. – Developer

Смежные вопросы