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

时间:2017-01-16 15:01:51

标签: node.js relationships adonis.js

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

一个例子:

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

但这只过滤掉所有具有''状态,所以我仍然得到一个包含空项目数组的订单的列表:

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

我想得到这个结果:

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

1 个答案:

答案 0 :(得分:0)

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

返回结果是lodash集合,因此您可以通过删除空数组来过滤结果。我建议在Github上为它创建一个问题。

更新

增加了对此的支持。查看此帖子https://github.com/adonisjs/adonis-lucid/issues/92