如何在laravel中按枚举列表排序



我有两列可按以下方式对条目进行排序:updated_atstate(这是枚举:processactiveopenclosed(

如果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");

最新更新