我如何向所有班级显示学生不在阿多尼斯停留?

时间:2019-12-18 16:47:53

标签: node.js adonis.js

我有三个表:

学生

id INT
名称VARCHAR

课程

id INT
说明VARCHAR

学生班

id INT
student_id(student.id的外键)
class_id(class.id的外键)

我该如何退还不在student_classes中的所有学生课程? 我在student_id中收到了request.params.student_id,我尝试尝试以下操作:

async getAvailableClassesOfAStudent({ request }){
  const classes = await Database
    .query()
    .select('class.*')
    .from('class')
    .leftJoin('student_classes', 'class.id', 'student_classes.class_id')
    .whereNotIn('student_classes.student_id', request.params.student_id) 

  return classes 
}

我得到:

  

选择“班级”。*从“班级”左侧加入“ student_classes”   “ class”。“ id” =“ student_classes”。“ class_id”其中   $ 1中没有“ student_classes”。“ student_id”-或附近的语法错误   “ $ 1”

1 个答案:

答案 0 :(得分:0)

我认为这可能对您有帮助:How to select all records from one table that do not exist in another table?

类似的东西:

...

const classes = await Database
    .query()
    .select('class.*')
    .from('class')
    .leftJoin('student_classes', 'class.id', 'student_classes.class_id')
    .whereNull('student_classes.student_id') 

...