簡體   English   中英

我怎樣才能在阿多尼斯的關系中取得進展?

[英]How i can make where inside a relationship in adonis?

我有這個查詢:

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

在此查詢中,我返回與 object 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 Model 中應用。 但是現在,我需要制作一個按單元過濾的過濾器,例如:

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 內的 object 數組。 當我嘗試以這種方式過濾時,我收到:

select count(*) as "total" from "book_unit_question" where "book_unit"."unit" = $1 - 缺少表 "book_unit" 的 FROM 子句條目

你快到了,在 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)
    })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM