【发布时间】:2019-11-15 19:42:31
【问题描述】:
我有这个问题:
const filter = request.input('filter')
const queryBookQuestions = BookUnitQuestion
.query()
.with('book_unit')
.with('user')
.with('book', (builder) => {
builder.where('id', request.params.id)
})
在此查询中,我返回与对象 book_unit 相关的所有书籍单元问题、用户和我收到的带有参数 (request.params.id) 的书籍。
现在我需要过滤单元。我实际上有这个过滤器,在“描述”中有一个位置:
if(filter){
if(filter.search("description") !== -1){
let description = filter.match(/(?<=description~contains~').*?(?=')/)
queryBookQuestions.where('description', 'ilike', '%'+description[0]+'%')
}
此过滤器效果很好,但他直接在 BookUnitQuestion 模型中应用。但是现在,我需要制作一个按单元过滤的过滤器,例如:
if(filter.search("unit") !== -1){
let unit = request.input('filter').match(/(?<=unit~contains~').*?(?=')/)
queryBookQuestions.where('book_unit.unit', unit[0])}
}
但这不起作用,因为 book_unit 是 book_unit_question 中的一个对象数组。 当我尝试以这种方式过滤时,我收到:
从“book_unit_question”中选择 count(*) 作为“total”,其中 "book_unit"."unit" = $1 - 缺少表的 FROM 子句条目 “书单元”
【问题讨论】: