Symfony2 Orderby特定字段值优先
Symfony2 Orderby specific field value first
Symfony2 当案例不工作时。
想先按特定字段值排序
$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 查询,但它不适用于以下语法
您可以添加一个隐藏字段 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);
CASE 构造是特定于供应商的,默认情况下不是 Doctrine 2 的一部分。但是,您可以查看 DoctrineExtensions。您可以将 IfElse 函数用于您的用例。
Symfony2 当案例不工作时。
想先按特定字段值排序
$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 查询,但它不适用于以下语法
您可以添加一个隐藏字段 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);
CASE 构造是特定于供应商的,默认情况下不是 Doctrine 2 的一部分。但是,您可以查看 DoctrineExtensions。您可以将 IfElse 函数用于您的用例。