Undefined binding when i use whereNot()

I’m trying to make a whereNot() in my query, but i’m receiving this error:

Undefined binding(s) detected when compiling SELECT query: select * from “book_unit_question_option” where “id” = ?

This is my query:

async getIdOptionsDisponiveis(idPergunta){

return await BookUnitQuestionOption

.query()

.where('book_unit_question_id', idPergunta)

.whereNot('correct', true) // Não necessita trazer a option correta pois ela já é adicionada em outro processamento

.ids()

}

I need all rows that column value is different that true.

I have null values in this column, i think this is why the error ocurres.

How i can fix this?
I need all the rows that

correct <> true

(null, undefined or false).

1 Like

Bom dia, Jovem.
Coloque essa query em uma variável e, antes do return, coloque

console.log(variavel.toString())

e poste aqui qual a SQL gerada

Fala aí man!! Seguinte:

Usa o Where com callback.

Fica assim ó:

.query()
.where(function(){
    this
        .where('book_unit_question_id', idPergunta)
        .whereNotNull('correct')
        .whereNot('correct', true)
})
1 Like

Pensei que dessa forma tinha funcionado, porém quando eu só possuo registros com null, estou recebendo undefined.

Meu código atual:

const unidadeSequenceAtualEstudante = await Database.select("*")

        .from("student_quiz_historics")

        .where("student_id", idEstudante)

        .where("class_id", idClasse)

        .where("book_id", idLivro)

        .where("execution_back_status", "<>", "Cancelado")

        .where(function(){

            this

            .whereNotNull("percentage_correct")

            .where("percentage_correct", ">=", parQtdAcerto)

        })

        .orderBy("sequence", "desc")

        .first();

se eu retiro o conteudo após o .where(function() eu obtenho registros, porém eu preciso aplicar essa condição se houver

Não entendi bem o que aconteceu mas vi que tu aplicou um monte de where e depois usou o where(callback).
Deverias usar somente o where(callback):

    const unidadeSequenceAtualEstudante = await Database.select("*")
        .from("student_quiz_historics")
        .where(function(){
            this
            .where("student_id", idEstudante)
            .where("class_id", idClasse)
            .where("book_id", idLivro)
            .where("execution_back_status", "<>", "Cancelado")
            .where("percentage_correct", ">=", parQtdAcerto)
            .whereNotNull("percentage_correct")
        })
        .orderBy("sequence", "desc")
1 Like