我想知道是否可以进行嵌套" .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'
}]
}]]
}
答案 0 :(得分:0)
您可以执行嵌套查询,但不会过滤顶级行。简而言之,Lucid不支持whereHas
。
返回结果是lodash集合,因此您可以通过删除空数组来过滤结果。我建议在Github上为它创建一个问题。
增加了对此的支持。查看此帖子https://github.com/adonisjs/adonis-lucid/issues/92