如何在 bookshelfJS 中编写嵌套查询

how to write nested query in bookshelfJS

以下是示例 Db 结构

我想要 bookshelfjs 中的结果,以便

1) 活动 table

中的所有列

2) 包含实例计数的一列属于广告系列

3) 包含实例计数的一列属于一个广告系列并且具有 status_id = 3

我知道原始查询:

 select campaign.*, 
     (select count(*) from instance where instance.campaign_id=campaign.id) as totalInstances,
     (select count(*) from instance where instance.campaign_id=campaign.id and instance.status.id=3) as duplicateInstances 
 from campaign

我已经使用

尝试过相同的查询
 qb.select(rawQuery); // rawQuery= above query

但运气不好。我怎样才能做到这一点?

knex('campaign').select([
  'campaign.*', 
  (builder) => builder
    .count('*')
    .from('instance')
    .where('instance.campaign_id', knex.raw('??', ['campaign.id']))
    .as('totalInstances'), 
  (builder) => builder
    .count('*')
    .from('instance')
    .where('instance.campaign_id', knex.raw('??', ['campaign.id']))
    .where('instance.status.id', 3)
    .as('duplicateInstances')
]).toSQL()

select 
  "campaign".*, 
  (select count(*) from "instance" where "instance"."campaign_id" = "campaign"."id") as "totalInstances", 
  (select count(*) from "instance" where "instance"."campaign_id" = "campaign"."id" and "instance"."status"."id" = ?) as "duplicateInstances" 
  from "campaign"