书架 orderBy 忽略大小写

bookshelf orderBy ignore case

我正在尝试按目前有效的列对我的集合获取结果进行排序,但我希望排序不区分大小写。我浏览了书架文档并在此处和其他论坛进行了搜索,但无济于事。是否需要一些原始的 Knex 插入?非常感谢任何帮助。

这是我的代码:

new Recipes().query('orderBy', 'name', 'asc').fetch({
  withRelated: [
    { instructions: (query) => { query.orderBy('step_number'); }},
    'tags',
    'ingredients',
    'ingredients.alternatives',
    'ingredients.tags'
  ]
});

我想做这样的事情:

new Recipes().query('orderByIgnoreCase', 'name', 'asc').fetch({
  withRelated: [
    { instructions: (query) => { query.orderBy('step_number'); }},
    'tags',
    'ingredients',
    'ingredients.alternatives',
    'ingredients.tags'
  ]
});

或:

new Recipes().query('orderBy', LOWER('name'), 'asc').fetch({
  withRelated: [
    { instructions: (query) => { query.orderBy('step_number'); }},
    'tags',
    'ingredients',
    'ingredients.alternatives',
    'ingredients.tags'
  ]
});

请尝试如下

Recipes.query(function (qb) {
  qb.orderByRaw('LOWER(name) asc');
})
.fetchAll({
  withRelated: [{
    'instructions': (query) => query.orderBy('step_number'),
    'tags',
    'ingredients',
    'ingredients.alternatives',
    'ingredients.tags'
  }]
})

还值得注意的是 postgresql sorting 取决于 OS