我有两列可按以下方式对条目进行排序:updated_at
和state
(这是枚举:process
、active
、open
、closed
(
如果updated_at
列中的所有内容都清楚,则只需要设置->orderBy('updated_at', 'desc)
但是我如何按以下顺序对枚举列表进行排序:open
->active
->CCD_ 11。
也就是说,首先会有开放的,然后是活跃的,然后才是封闭的。
你能帮忙解决这个问题吗?
这是一个原始的SQL解决方案。
ORDER BY CASE state
WHEN 'open' THEN 1
WHEN 'active' THEN 2
WHEN 'closed' THEN 3
ELSE 4
END
这是一个基于Laravel的解决方案。
$query->orderByRaw("CASE state
WHEN 'open' THEN 1
WHEN 'active' THEN 2
WHEN 'closed' THEN 3
ELSE 4
END");