是否可以使用 Lucid 在 AdonisJs 中执行嵌套查询构建器?

Is it possible to do a nested query builder in AdonisJs with Lucid?

我想知道是否可以在 AdonisJs 中使用 Lucid 进行嵌套的“.scope”查询?我想获得所有在给定办公室的 OrderItems 中没有 'd' 状态的订单(Laravel 为此使用 whereHas('orders.items'))。

一个例子:

const office = yield Office
  .query()
  .with('orders.items')
  .where('id', officeId)
  .scope('orders.items', (builder) => {
    builder.whereNot('status','d')
  })
  .first()

但这只会过滤掉所有具有 'd' 状态的 OrderItems,因此我仍然得到一个列表,其中包含具有空 Item 数组的订单:

office: {
  orders: [{
    items: [{
      status: 'p'
    }, {
      status: 'c'
    }]
  },{
    items: []
  },{
    items: []
  }]]
}

我想得到这个结果:

office: {
  orders: [{
    items: [{
      status: 'p'
    }, {
      status: 'c'
    }]
  }]]
}

您可以执行嵌套查询,但它们不会过滤顶级行。简而言之,Lucid 不支持 whereHas

return 结果是一个 lodash 集合,因此您可以通过删除空数组来过滤结果。我建议在 Github.

上创建一个相同的问题

更新

已添加对 same 的支持。查看此线程 https://github.com/adonisjs/adonis-lucid/issues/92