我需要显示优惠券列表,并根据created_at日期和到期状态对其进行订购。
我的优惠券表中的列
id
name
price
expired_at
created_at
status
我的laravel查询
$coupons= Coupon::where('status', 2)->orderBy('created_at', 'DESC')->orderBy( First I will need to compare expired_at with today date here)->get();
问题是我不知道如何orderbyBy coupon_status,我想在列表底部显示所有过期的优惠券,在列表顶部显示正在进行的优惠券,也要在orderBy created_at中显示(最新的和正在进行的优惠券在顶部名单)
因此可能需要先创建临时列以获取到期状态,然后才能订购列表。
任何想法如何实现这一目标?
最佳答案
比较今天的过期时间(expired_at < NOW()
)
$coupons= Coupon::where('status', 2)->orderByRaw(
"CASE WHEN expired_at IS NULL OR expired_at > CURDATE() THEN 1 ELSE 0 END DESC"
);
关于php - 基于到期状态的Laravel OrderBy优惠券,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59541723/