sql - Symfony2 Orderby特定字段值优先

标签 sql postgresql symfony doctrine-orm query-builder

Symfony2 当 Case 不工作时。

想先按特定字段值排序

$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);

关于sql - Symfony2 Orderby特定字段值优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41122273/

相关文章:

sql - 对标签名称使用主键或唯一索引?

MySQL查询分配错误

sql - 将带有时区的时间戳转换为星期几

postgresql - 如何使用 SSL/TLS 在 CircleCI 中运行 PostgreSQL?

javascript - 是否使用全局 npm

sql - PostgreSQL 中的派生类型

php - 如何将mysql中的列值更改为行值?

postgresql - 从 psql 生成空输出

javascript - 单击按钮提交表单并禁用按钮

jquery - 通过ajax提交的表单总是返回未选中复选框的TRUE