Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 可以用Lucid在AdonisJs中创建嵌套查询生成器吗?_Node.js_Relationships_Adonis.js - Fatal编程技术网

Node.js 可以用Lucid在AdonisJs中创建嵌套查询生成器吗?

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) => {

我想知道是否可以在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,因此我仍然会得到一个包含带有空项目数组的订单的列表:

office: {
  orders: [{
    items: [{
      status: 'p'
    }, {
      status: 'c'
    }]
  },{
    items: []
  },{
    items: []
  }]]
}
我想得到这个结果:

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

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

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

更新 已经添加了对相同内容的支持。签出此线程