我需要顯示優(yōu)惠券列表并根據(jù) created_at 日期和到期狀態(tài)對(duì)其進(jìn)行排序。我的優(yōu)惠券表的列idnamepriceexpired_atcreated_atstatus我的 laravel 查詢$coupons= Coupon::where('status', 2)->orderBy('created_at', 'DESC')->orderBy( First I will need to compare expired_at with today date here)->get();問(wèn)題是我不知道如何 orderBy coupon_status,我想在列表底部顯示所有過(guò)期的優(yōu)惠券,在列表頂部顯示正在進(jìn)行的優(yōu)惠券,并且 orderBy created_at (最新和正在進(jìn)行的優(yōu)惠券在頂部名單)所以可能需要?jiǎng)?chuàng)建臨時(shí)列來(lái)獲取過(guò)期狀態(tài),然后才能對(duì)列表進(jìn)行排序。任何想法如何實(shí)現(xiàn)這一目標(biāo)?
3 回答

www說(shuō)
TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
比較過(guò)期日期和今天 ( 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"
);

長(zhǎng)風(fēng)秋雁
TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
你也可以這樣寫:
$coupons= Coupon::where('status', 2)->orderBy([ 'coupon_status' => 'ASC', 'created_at' => 'DESC' ])->get();
我希望它會(huì)幫助你:)

蝴蝶不菲
TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
只需使用ORDER BY coupon_status ASC, created_at DESC'
這expired_at
可以與CURDATE()
:
試試這個(gè)查詢:
$coupons= Coupon::where('status', 2) ->orderBy(\DB::raw('(IF((expired_at IS NULL OR expired_at < CURDATE()), 1, 0 )) ASC, created_at DESC')) ->get();
- 3 回答
- 0 關(guān)注
- 157 瀏覽
添加回答
舉報(bào)
0/150
提交
取消