根据列值进行出色的排序

时间:2019-06-09 10:55:23

标签: laravel eloquent

我有一个带有以下各列的产品价格表

product_id, seller_id, original_price, sale_price, sale_start_date, sale_end_date

我想按升序对表格进行有效价格排序。

有效价格可以是original_price或sale_price,如果其不为零,并且当前日期在开始日期和结束日期之间。

如果有人有解决方案,请解释一下该解决方案,因为我在sql方面不是很强并且正在尝试学习

1 个答案:

答案 0 :(得分:1)

您可以通过选择effective_price作为汇总并对其进行排序来实现。例如:

select
    *,
    if (
        sale_price > 0 and sale_start_date <= now() and sale_end_date > now(),
        sale_price,
        original_price
    ) as effective_price
from product_price
order by effective_price asc

或者通过雄辩:

ProductPrice::selectRaw('
    *,
    if (
        sale_price > 0 and sale_start_date <= now() and sale_end_date > now(),
        sale_price,
        original_price
    ) as effective_price
')->orderBy('effective_price')->get();