Как я могу использовать где в Адонисе? - PullRequest
1 голос
/ 06 февраля 2020

Я пытаюсь сделать запрос, который возвращает тесты одного класса, только если execution_back_status равен "Enviado Perguntas".

Но я получаю записи, отличающиеся от "Enviado Perguntas"

Что я пробую:

let quizAbertos = await Class.query()

    .with('quizzes')

    .whereHas('quizzes', builder => {

      builder.where('student_id', idEstudante)

      builder.where('execution_back_status', 'Enviado Perguntas')

     })

    .fetch()

    quizAbertos = quizAbertos.toJSON()

    console.log(JSON.stringify(quizAbertos))

My console.log():

[
  {
    "id": 1,
    "code": "ING-NOT-2020",
    "description": "Inglês Noturno 2020",
    "start_date": "2020-01-06T03:00:00.000Z",
    "end_date": "2020-03-01T03:00:00.000Z",
    "period": "Noturno",
    "language": "Inglês",
    "status": false,
    "user_id": 9,
    "created_at": "2020-01-06 09:46:30",
    "updated_at": "2020-02-06 08:10:33",
    "language_substring": "US",
    "quizzes": [
      {
        "id": 819,
        "sequence": null,
        "student_id": 1,
        "class_id": 1,
        "book_id": 1,
        "book_unit_id": 1,
        "quiz_id": 828,
        "percentage_correct": 40,
        "review": false,
        "execution_back_status": "Reprovado",
        "user_id": null,
        "created_at": "2020-02-06 10:45:25",
        "updated_at": "2020-02-06 11:16:23"
      },
      {
        "id": 820,
        "sequence": null,
        "student_id": 1,
        "class_id": 1,
        "book_id": 1,
        "book_unit_id": 1,
        "quiz_id": 829,
        "percentage_correct": null,
        "review": false,
        "execution_back_status": "Enviado Perguntas",
        "user_id": null,
        "created_at": "2020-02-06 11:16:52",
        "updated_at": "2020-02-06 11:16:52"
      }
    ]
  }
]

Как вы видите, у меня есть результаты с "execute_back_status": Reprovado, мне нужно только со значением "Enviado Perguntas"

Почему это происходит?

В Класс Модель у меня:

quizzes () {

   return this.hasMany('App/Models/StudentQuizHistorics')

  }

1 Ответ

1 голос
/ 06 февраля 2020

Вопрос решен на forum.adonis js .com

Используйте с () для фильтрации сообщений и используйте whereHas для фильтрации пользователей . Нравится:

// Testing code
var result = User.query()
    .with("posts", builder => {
      // Filter on the posts array
      builder.where("cond1", "2");
      builder.where("cond2", "3");
    })
    .whereHas("posts", builder => {
      // Filter user
      builder.where("cond1", "1");
      builder.where("cond2", "3");
    })
    .fetch();
...