在我当前的应用程序中,我有一个剧本列表,它几乎普遍按查询中的剧本名称排序。目前,它是简单地使用DB::select()
语句构建的,但是当我们进行大量重构时,我们想开始使用 Kohana 的 ORM 库。问题出在我们通常不按实际剧名排序,而是按经过处理的版本,去掉文章等并按此排序(因此摩尔门经出现在 Bs 旁边,而不是TS)。我不知道如何将其转移到 ORM 模型定义中。
选择代码如下所示(删节):
DB::select(column, column,
DB::expr("CASE WHEN SUBSTRING_INDEX(show_name, ' ', 1) IN ('a', 'an', 'the')
THEN SUBSTRING(show_name, INSTR(show_name, ' ') + 1)
ELSE show_name
END AS show_name_sort")
有没有办法创建一个假的 show_name_sort 列,Kohana 在保存时会忽略它,但我仍然可以在order_by
通话中使用它?还是我只需要创建一个实际的列,其中包含名称的排序版本?