我如何在阿多尼斯的恋爱关系中取得优势?

时间:2019-11-15 19:42:31

标签: node.js adonis.js

我有这个查询:

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相关的所有书单位问题,用户和我通过params(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子句条目   “ book_unit”

1 个答案:

答案 0 :(得分:0)

你快到了,在 with('book_unit') 之后你可以:

filter = request.input('filter')
const queryBookQuestions =  BookUnitQuestion
    .query()
    .with('book_unit')
    .whereHas('book_unit', (builder) => {
        ...your filter here
    })
    .with('user')
    .with('book', (builder) => {
        builder.where('id', request.params.id)
    })