学生表与设备表之间存在多对多的关系(学生在许多设备上执行,设备有很多学生)。我有一个 student_results表,它有一个复合主键( student_id 和 apparatus_id )和一个名为results的第三个字段。
我写了一个查询,找到学生不有结果的所有设备。我给出的例子是id = 121的学生。 子查询是。
SELECT apparatus_id, strapparatus_name FROM apparatuss
WHERE apparatus_id <> ALL(SELECT apparatus_id FROM student_results
WHERE student_id =' . 121 . ')';
我想用Eloquent(Laravel 4.1)写这个。
非常感谢任何帮助。
答案 0 :(得分:2)
假设您已经设置了您的Eloquent模型Apparatus
和StudentResult
,这是一种方式:
Apparatus::whereNotIn(
'apparatus_id',
StudentResult::where('student_id', 121)->lists('apparatus_id')
)->get('apparatus_id', 'strapparatus_name');
或者,如果您没有student_results表的模型,您可以:
Apparatus::whereNotIn(
'apparatus_id',
DB::table('student_results')->where('student_id', 121)->lists('apparatus_id');
)->get(array('apparatus_id', 'strapparatus_name'));