Node.js Order Bookshelf.js按相关列值获取

Node.js Order Bookshelf.js按相关列值获取,node.js,bookshelf.js,knex.js,Node.js,Bookshelf.js,Knex.js,我正在使用Bookshelf.js/Knex.js,获取一个模型(称之为用户)和一个相关的子模型(称之为公司)。我可以按子模型上的一个字段订购吗?公司。名称? 另外,如果可能的话,我可以进行多重排序,比如说company.name降序,然后lastName升序吗 这是我当前的代码,它只适用于根模型字段qb.orderBy('company.name','desc')不起作用 users.query(function(qb) { qb.orderBy('lastName', 'asc'); }

我正在使用Bookshelf.js/Knex.js,获取一个模型(称之为用户)和一个相关的子模型(称之为公司)。
我可以按子模型上的一个字段订购吗?
公司。名称

另外,如果可能的话,我可以进行多重排序,比如说
company.name
降序,然后
lastName
升序吗

这是我当前的代码,它只适用于根模型字段
qb.orderBy('company.name','desc')
不起作用

users.query(function(qb) {
  qb.orderBy('lastName', 'asc');
})
.fetch({withRelated: ['company']})
.then(success, error);
请尝试以下操作:

users
.fetch({withRelated: [
     {
         'company': function(qb) {
             qb.orderBy("name");
         }
     }
]})
.then(success, error);

我是从

得到这个想法的,你可以这样做,而不需要函数:

users.query(function(qb) {
  qb.query('orderBy', 'lastName', 'asc');
})
.fetch({withRelated: ['company']})
.then(success, error);

在这里找到:

我想我通过这样做解决了这个问题:

let postHits =
    await posts
        .query(qb => qb
            .innerJoin('post_actor_rel', function () {
                this.on('post.id', '=', 'post_actor_rel.post_id');
            })
            .innerJoin('actor', function () {
                this.on('post_actor_rel.actor_id', '=', 'actor.id');
            })
            .orderByRaw('actor.name ASC')
            .groupBy('id')
        )
        .fetchPage({
            withRelated: ['roles', 'themes', 'activity_types', 'subjects', 'educational_stages', 'images', 'documents', 'actors'],
            limit,
            offset
        },
    );

我通过与所需的表进行内部连接来修改查询,并在排序(使用orderByRaw,因为我需要添加一些我认为orderBy不可能实现的排序)后,根据post的id进行分组以消除重复行。唯一的问题是没有定义用于排序的参与者名称(几种可能的名称中的一种)。

您解决过这个问题吗?