2016-12-13 95 views
1

Symfony2當Case不工作時。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