首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Use OrderBy Use CodeIgniter Doctrine QueryBuilder (使用OrderBy不起作用)

Use OrderBy Use CodeIgniter Doctrine QueryBuilder (使用OrderBy不起作用)
EN

Stack Overflow用户
提问于 2020-07-29 22:43:09
回答 1查看 70关注 0票数 0

早上好,

我有这个功能来按“最贵”和“最便宜”来排序我的产品,它工作得很好,但问题是,我有一些没有图像的产品,当我执行以下操作时,我希望它们被移到最后一页:

代码语言:javascript
复制
              ->addOrderBy('u.status','desc')
              ->addOrderBy('u.imagem', 'DESC')
              ->addOrderBy($order,$for)
              ->getQuery()

他将没有图片的产品移动到最后一页,但不能让我的OrderBy按最昂贵和最便宜的方式订购。

When `

代码语言:javascript
复制
            ->addOrderBy('u.status','desc')
            ->addOrderBy($order,$for)
            ->addOrderBy('u.imagem', 'DESC')
            ->getQuery()

工作正常,但图像继续随机。

EN

回答 1

Stack Overflow用户

发布于 2020-07-30 21:14:43

由于当产品没有图像时,u.imagem字段为空,因此您可以:

1.-如果您想禁止结果中没有图像的产品:

u.imagem IS NOT NULL添加一个where子句,您将只返回包含图像的结果。

2.-如果您想/需要的只是保留列表中没有图像的产品,但在列表末尾,您可以:

代码语言:javascript
复制
        ->addOrderBy('u.status','desc')
        ->addOrderBy($order,$for)
        ->addOrderBy('u.imagem IS NULL', 'ASC')
        ->getQuery()

上述方法之所以有效,是因为IS NULL在false时返回0,在true时返回1。通过按升序对这些1和0进行排序,您将首先得到不满足IS NULL的所有1和0(即,实际具有图像的那些),然后是其他的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63156189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档