在Adonis JS的计算属性内使用查询生成器

时间:2019-06-14 13:39:23

标签: javascript knex.js adonis.js

我有两个模型,Contract和TimeEntry。 TimeEntry模型以“小时”为列,并通过其“ contract_id”外键列引用合同。我想根据相关的时间条目返回合同的“总时数”,这似乎很简单。我以为这段代码行得通,

const TimeEntry = use('App/Models/TimeEntry')

class Contract extends Model {
  static get computed() {
    return ['totalHours']
  }
  ...
  getTotalHours({ id }) {
    return await TimeEntry
      .query()
      .where('contract_id', id)
      .sum('hours')
      .fetch()
  }
}

但是,它在“意外令牌”上出错,并说TimeEntry是意外令牌。

1 个答案:

答案 0 :(得分:0)

您不应将fetch()与sum()一起使用。只需删除fetch()并以合同形式返回合同小时数即可。

const TimeEntry = use('App/Models/TimeEntry')

class Contract extends Model {
  static get computed() {
    return ['totalHours']
  }
  ...
  getTotalHours({ id }) {
    return await TimeEntry
      .query()
      .where('contract_id', id)
      .sum('hours')
  }
}