Node.js 可以用Lucid在AdonisJs中创建嵌套查询生成器吗?
我想知道是否可以在AdonisJs中使用Lucid进行嵌套的“.scope”查询?我想获取给定办公室的OrderItems中不具有“d”状态的所有订单(Laravel为此使用whereHas('Orders.items')) 例如:Node.js 可以用Lucid在AdonisJs中创建嵌套查询生成器吗?,node.js,relationships,adonis.js,Node.js,Relationships,Adonis.js,我想知道是否可以在AdonisJs中使用Lucid进行嵌套的“.scope”查询?我想获取给定办公室的OrderItems中不具有“d”状态的所有订单(Laravel为此使用whereHas('Orders.items')) 例如: const office = yield Office .query() .with('orders.items') .where('id', officeId) .scope('orders.items', (builder) => {
const office = yield Office
.query()
.with('orders.items')
.where('id', officeId)
.scope('orders.items', (builder) => {
builder.whereNot('status','d')
})
.first()
但这只会过滤掉所有具有“d”状态的OrderItems,因此我仍然会得到一个包含带有空项目数组的订单的列表:
office: {
orders: [{
items: [{
status: 'p'
}, {
status: 'c'
}]
},{
items: []
},{
items: []
}]]
}
我想得到这个结果:
office: {
orders: [{
items: [{
status: 'p'
}, {
status: 'c'
}]
}]]
}
您可以执行嵌套查询,但它们不会筛选顶级行。简而言之,Lucid不支持whereHas 返回的结果是一个lodash集合,因此您可以通过删除空数组来过滤结果。我建议在Github上为同样的问题创建一个问题 更新 已经添加了对相同内容的支持。签出此线程