早上好,
我有这个功能来按“最贵”和“最便宜”来排序我的产品,它工作得很好,但问题是,我有一些没有图像的产品,当我执行以下操作时,我希望它们被移到最后一页:
->addOrderBy('u.status','desc')
->addOrderBy('u.imagem', 'DESC')
->addOrderBy($order,$for)
->getQuery()他将没有图片的产品移动到最后一页,但不能让我的OrderBy按最昂贵和最便宜的方式订购。
When `
->addOrderBy('u.status','desc')
->addOrderBy($order,$for)
->addOrderBy('u.imagem', 'DESC')
->getQuery()工作正常,但图像继续随机。

发布于 2020-07-30 21:14:43
由于当产品没有图像时,u.imagem字段为空,因此您可以:
1.-如果您想禁止结果中没有图像的产品:
为u.imagem IS NOT NULL添加一个where子句,您将只返回包含图像的结果。
2.-如果您想/需要的只是保留列表中没有图像的产品,但在列表末尾,您可以:
->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(即,实际具有图像的那些),然后是其他的
https://stackoverflow.com/questions/63156189
复制相似问题