Используйте Query Builder внутри вычисляемого свойства в Adonis JS - PullRequest
0 голосов
/ 14 июня 2019

У меня есть две модели, 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 голосов
/ 26 июня 2019

Вы не должны использовать 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')
  }
}
...